微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-从Groovy连接到AS400的ProgramCallDocument挂起

此问题与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或它如何进行程序调用,因此任何帮助都将是很棒的.

进一步说明,今天在相关问题上进行了更多挖掘,我还发现了这样的帖子:

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类或作为JDBC存储过程来调用本机程序可能会更容易.

这是Groovy中CommandCall用法的示例:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐