我有一个jar(我无法改变),我希望在IBM MQ File Transfer Edition(FTE)中成功传输文件后调用它。我正在使用MQ FTE 7.0.4。我在commandPath
中设置agent.properties
以包含java可执行文件的路径以及我想要运行的jar的路径。我得到的最常见的错误是:
代理的命令路径 ' /选择/ IBM / WMQFTE / JRE / bin中:/path/to/jar/postTask.jar'没有定义路径 这个命令。只有路径在代理程序命令上的命令 路径可以运行。
当我将post transfer命令设置为:/opt/IBM/WMQFTE/jre/bin/java
没有参数时,除了java可执行文件抱怨它没有获取任何参数之外,我没有得到任何错误。当我运行/opt/IBM/WMQFTE/jre/bin/java -jar /path/to/jar/postTask.jar ${FilePath}
时,我收到类似上面的错误。
为什么我可以单独运行/调用Java,但是当我尝试包含参数时,它会失败?
我还没有尝试过的事情: 1)编写一个小批处理脚本,执行我想要的java调用。 2)与IBM合作开设PMR。
其他研究:
这个非常有帮助的question解释了呼叫和退出之间的区别。退出需要实现MonitorExit
界面,我无法做到这一点。
此问题也可能属于Super User;我不确定。
答案 0 :(得分:2)
我试图重新创建您的问题,但我可以使用post source program调用成功运行Java程序(打包为Jar文件);这是我相信你想要做的。因此,我认为您的问题可能是配置问题。
根据您提供的信息,您应该设置" commandPath"您的代理的agent.properties文件中的属性如下:
COMMANDPATH = /选择/ IBM / WMQFTE / JRE / bin中
然后应该更改您的代理,然后重新启动更改。
然后,您可以使用fteCreateTransfer命令测试是否成功调用了Java程序;要将可运行的Jar文件作为后源程序调用执行,请在命令中使用以下选项:
-postsrc"可执行文件:/ opt / IBM / WMQFTE / jre / bin / java(-jar,/ path / to / jar / postTask.jar,),,, 0"
(语法在FTE信息中心中描述:http://pic.dhe.ibm.com/infocenter/wmqfte/v7r0/topic/com.ibm.wmqfte.doc/start_new_transfer_cmd.htm)
现在,根据您的问题,我假设您正在使用资源监视器(提及$ {FilePath}),因此您需要正确配置资源监视器使用的传输模板XML。如:
...
<transferSet priority="0">
<postSourceCall>
<command name="/opt/IBM/WMQFTE/jre/bin/java" retryCount="0" retryWait="0" successRC="0" type="executable">
<argument>-jar</argument>
<argument>/path/to/jar/postTask.jar</argument>
<argument>${FilePath}</argument>
</command>
</postSourceCall>
<item checksumMethod="MD5" mode="binary">
...
请注意,这三个参数被拆分为单独的元素。
您能否确保您的系统配置与上述相同,并再试一次,看看它是否可以解决您的问题?
谢谢!