Java JT400-获取由命令生成的假脱机文件
我正在使用JT400开发一个java类,并尝试使用以下命令获得命令“dspmsg qsysopr”的结果: 我发现该命令在带有用户QUSER的作业中运行,但是在实例化对象AS400时,在指定的用户“user”下生成了一个spool文件,其中包含结果 我可以成功运行该命令,但结果不是队列中的消息: “已创建打印机输出。” 我使用以下代码获得此结果:Java JT400-获取由命令生成的假脱机文件,java,ibm-midrange,jt400,Java,Ibm Midrange,Jt400,我正在使用JT400开发一个java类,并尝试使用以下命令获得命令“dspmsg qsysopr”的结果: 我发现该命令在带有用户QUSER的作业中运行,但是在实例化对象AS400时,在指定的用户“user”下生成了一个spool文件,其中包含结果 我可以成功运行该命令,但结果不是队列中的消息: “已创建打印机输出。” 我使用以下代码获得此结果: Job job = cmd.getServerJob(); AS400Message[] messageList = cmd.getMessageLi
Job job = cmd.getServerJob();
AS400Message[] messageList = cmd.getMessageList();
for (int i = 0; i < messageList.length; i++) {
System.out.println(messageList[i].getText());
}
问题是:我没有调用方法“getSpoolFile”的参数。
如果我手动登录AS400,检查spool文件的详细信息,并使用手动获取的参数调用该方法,我将成功获取spool文件。
但我收到的工作对象是:
Job job = cmd.getServerJob();
运行后:
cmd.runCommand("dspmsg qsysopr");
与创建假脱机文件的作业不同。例如,如果我选中:
System.out.println(job.getUser());
结果是“QUSER”,但spool文件是在“user”输出队列下生成的
问题2:如何获得与生成该假脱机文件相关的作业
问题3:我还可以获取与生成的假脱机文件相关的参数,如假脱机文件编号和假脱机文件名吗
我需要以下信息才能调用“getSpoolFile”方法:
- 假脱机文件名
- 假脱机文件号
- 职务名称
- 工作用户
- 工作编号
Carlos您可能根本不想“打印”这些消息。您还没有说过在收到任何消息后要对其执行什么操作(而且从一开始获取QSYSOPR消息可能不是一个好主意)
你可能会回顾一下,然后开始思考如何继续。可以对消息做很多事情。你可能根本不想“打印”消息。你还没有说过在收到消息后要对任何消息做什么(而且从一开始获取QSYSOPR消息可能不是一个好主意)
您可能会回顾并开始思考您希望如何继续。有很多事情可以通过消息来完成。不具体说明如何检索假脱机文件信息,但如果这是您的最终目标,这将为您提供QSYSOPR消息
AS400 sys = new AS400(as400system,username,password);
//Get the user object for QSYSOPR
User u = new User(sys,"qsysopr");
//Get the path to the user's message queue
String qpath = u.getMessageQueue();
//Retrieve the message queue object
MessageQueue queue = new MessageQueue(sys, qpath);
// Get the list of messages currently in this user's queue.
queue.setListDirection(false);
//Get the first 15 messsages
QueuedMessage[] qm = queue.getMessages(0,15);
//Loop through the messages
for (int i = qm.length -1; i >=0; i--)
{
System.out.println(qm[i].getText());
}
当然,您可以从QueuedMessage类检索其他属性、日期、回复状态和用户。无需解析。不具体说明如何检索假脱机文件信息,但如果这是您的最终目标,这将为您获取QSYSOPR消息
AS400 sys = new AS400(as400system,username,password);
//Get the user object for QSYSOPR
User u = new User(sys,"qsysopr");
//Get the path to the user's message queue
String qpath = u.getMessageQueue();
//Retrieve the message queue object
MessageQueue queue = new MessageQueue(sys, qpath);
// Get the list of messages currently in this user's queue.
queue.setListDirection(false);
//Get the first 15 messsages
QueuedMessage[] qm = queue.getMessages(0,15);
//Loop through the messages
for (int i = qm.length -1; i >=0; i--)
{
System.out.println(qm[i].getText());
}
当然,还有其他属性、日期、回复状态、用户,您可以从QueuedMessage类中检索。无需解析。感谢您的回复。我尝试的是一个类来运行命令并获取命令结果的回复。它是一个通用类,可用于执行任务,甚至可以执行一些监视操作在系统中。除了“dspmsg”的这个细节外,它工作得很好。当我们运行这个命令时,我们显然不希望结果是“spool file created”,而是队列qsysopr的消息。如果我明白了你的意思,你是在告诉我,对于dspmsg,我应该使用另一种方法来获取消息,而不是使用“runCommand”方法"为了实现这个目标。你是这么说的吗?Ps。我是JT400的真正初学者。我将测试你链接的代码并阅读更多关于它的内容。DSPMSG实际上永远不适合任何批处理过程,无论是Java还是其他,除非出于某种原因明确需要假脱机报告。使用设计用于访问的JTOpen类消息队列对您来说更好。感谢您的回复。我正在尝试的是一个类来运行命令并获得命令结果的回复。它是一个通用类,可用于执行任务,甚至对系统进行一些监视。除了“dspmsg”的这一细节外,它工作得很好。当我们运行此命令时,我们显然不希望结果是“创建假脱机文件”,而是队列qsysopr的消息。如果我明白你的意思,你是在告诉我,对于dspmsg,我应该使用另一种方法来获取消息,而不是使用“runCommand”方法为了实现这个目标。你是这么说的吗?Ps。我是JT400的真正初学者。我将测试你链接的代码并阅读更多关于它的内容。DSPMSG实际上永远不适合任何批处理过程,无论是Java还是其他,除非出于某种原因明确需要假脱机报告。使用设计用于访问的JTOpen类消息队列更适合您。
AS400 sys = new AS400(as400system,username,password);
//Get the user object for QSYSOPR
User u = new User(sys,"qsysopr");
//Get the path to the user's message queue
String qpath = u.getMessageQueue();
//Retrieve the message queue object
MessageQueue queue = new MessageQueue(sys, qpath);
// Get the list of messages currently in this user's queue.
queue.setListDirection(false);
//Get the first 15 messsages
QueuedMessage[] qm = queue.getMessages(0,15);
//Loop through the messages
for (int i = qm.length -1; i >=0; i--)
{
System.out.println(qm[i].getText());
}