java - ProgramCallDocument 从 Groovy 挂起连接到 AS400

标签 java groovy ibm-midrange jt400

这个问题特别与 JT400 类 ProgramCallDocument 相关,它的方法是 callProgram(String ProgramName)

我试过在 try/catch 中交换调用 - 但它没有抛出异常,调试器进入 callProgram 方法,并无限期地坐在那里。

此处提供了有关 API 的少量特定信息:

http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.toolbox.doc/rzahhxpcmlusing.htm

这是我正在运行的代码:

AS400 as400System = AS400Factory.getAS400System()
ProgramCallDocument programCallDocument = new ProgramCallDocument(as400System, "com.sample.xpcml.Sample.xpcml")
programCallDocument.setStringValue("sampleProgramName.value", sampleValue)

Boolean didProgramCallDocumentRunSuccessfullyOnTheAS400 = programCallDocument.callProgram("sampleProgramName")

该片段的最后一行就在那里。为了简洁起见,我省略了 try/catch。

ProgramCallDocument 构造函数使用的 XPCML 文件只是 IBM 用于指定程序调用的参数长度和类型的专有 XML 格式。如果有帮助,我可以回来添加它,但是 ProgramCallDocument 构造函数对 XML 运行验证,并且没有出现任何验证错误。我不熟悉 JT400,也不熟悉它如何进行程序调用,所以任何帮助都会很棒。

作为进一步说明,今天对相关问题做了更多挖掘,我还发现了这篇 SO 帖子:

Monitor and handle MSGW messages on a job on an IBM i-series (AS/400) from Java

我认为它与这个问题相关,因为它是关于在 Java/Groovy 端捕获 MSGW 状态的方法。

最佳答案

很可能被调用的程序进入了 MSGW 状态(错误)。

检查 WRKACTJOB JOB(QZRCSRVS) 以查找程序调用作业并查看状态并查看作业日志。


使用 CommandCall 调用 native 程序可能更容易类或作为 JDBC存储过程。

这是 CommandCall 的示例Groovy 中的用法:

sys = AS400Factory.AS400System
cmd = new CommandCall(sys)
if (!cmd.run "CALL MYLIB.MYPGM PARM('${sampleValue}')") {
    println cmd.messageList
}

关于java - ProgramCallDocument 从 Groovy 挂起连接到 AS400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22565185/

相关文章:

java - Android应用程序: RecyclerView hangs when I put around 300 records from API in it at one go

ibm-midrange - 如何获取活跃服务入口列表?

java - 在Java中指定File中的相对路径

java - 通过java代码生成javascript时<a>标签问题

flash - 如何在Adobe Flash中使用Groovy-Grails?

java - 注入(inject)类方法的读/写锁

xml - 什么是用 grails 制作 XML 的好方法

ibm-midrange - AS400 物理文件记录上次更新时间戳

sql - 如何在 iSeries 上的 SQL400 中获取 UTC 时间戳?

java - 带有 java 集合的 OnSaveInstanceState/OnRestoreInstanceState