有谁知道如何自动回复状态为MSGW的消息,这些消息会阻止IBM i-series(AS / 400)上的作业?
我正在使用jt400 / jtopen库从Java访问AS / 400上的程序。我正在使用com.ibm.as400.access.ProgramCall类,它工作正常,除非程序由于某种原因失败。与几乎所有程序一样,有时会发生故障,但不幸的是,在这种情况下,它不会导致状态消息或异常。相反,调用线程只是挂起。更糟糕的是,任何调用AS / 400来获取有关作业的信息(jt400中的另一个类,大多数都能达到预期的效果)支持队列也会挂起。
我当然可以监视调用运行的线程,并在等待一段时间之后将其终止,但这是最后的手段。从系统中获取错误消息会很好。
答案 0 :(得分:0)
您可以尝试执行此命令,然后使用com.ibm.as400.access.CommandCall.run()方法调用您的pcml:
CHGJOB INQMSGRPY(*DFT)
它将“C”设置为所有消息的默认答案。
但是你应该确保你有消息的记录,以便知道产生这个消息的问题
此致
答案 1 :(得分:0)
我不相信Java可以直接捕获该API另一端发生的错误。我所做的就是“强化”#39; RPG(IBM i side)程序,以便监视错误,而不是让默认错误处理程序获取它们。发生错误时,RPG程序会正常终止并将错误代码甚至整个消息传回给Java应用程序。
答案 2 :(得分:0)
我发现你可以使用ExecutorService的超时机制来中断MSGW中的ProgramCall。
之后您必须丢弃AS400对象,并且服务器作业仍在MSGW中,但至少您可以继续使用Javaside。
(如果要调查挂起作业,则需要使用单独的AS400对象。)