0

有谁知道如何自动回复状态为 MSGW 的消息,这些消息会阻止 IBM i 系列 (AS/400) 上的工作?

我正在使用 jt400/jtopen 库从 Java 访问 AS/400 上的程序。我正在使用 com.ibm.as400.access.ProgramCall 类,它工作正常,除非程序由于某种原因失败。与几乎所有程序一样,有时会发生故障,但不幸的是,在这种情况下,它不会导致状态消息或异常。相反,调用线程只是挂起。更糟糕的是,任何对 AS/400 的调用以获取有关支持队列的作业(jt400 中的另一个类,它主要执行您所期望的)的信息也将挂起。

我当然可以监视调用运行的线程并在等待一段时间后简单地杀死它,但这是最后的手段。从系统返回错误消息会很好。

4

3 回答 3

0

You could try execute this command before invoke your pcml with com.ibm.as400.access.CommandCall.run() method:

CHGJOB INQMSGRPY(*DFT)

It sets 'C' as default answer for all messages.

but you should ensure you have log of the messages in order to know the problem which generates this message

Regards,

于 2011-03-16T23:04:54.643 回答
0

我不相信 Java 可以直接捕获该 API 另一端发生的错误。我所做的是“强化”RPG(IBM i 端)程序,以便它监视错误,而不是让默认错误处理程序获取它们。发生错误时,RPG 程序会优雅地终止并将错误代码甚至整个消息传回 Java 应用程序。

于 2012-02-21T18:40:15.203 回答
0

我发现您可以使用 ExecutorService 的超时机制来中断 MSGW 中的 ProgramCall。

之后你必须丢弃AS400对象,服务器作业还在MSGW,但至少你可以在Javaside继续。

(如果要调查悬挂作业,则需要使用单独的 AS400 对象。)

于 2012-06-26T10:56:27.953 回答