1

我有一个 jar(我无法更改),我想在 IBM MQ File Transfer Edition (FTE) 中的文件传输成功后调用它。我正在使用 MQ FTE 7.0.4。我已经设置commandPathagent.properties包含 java 可执行文件的路径和我要运行的 jar 的路径。我得到的最常见的错误是:

代理的命令路径“/opt/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。

其他研究:这个非常有用的问题解释了 Calls 和 Exits 之间的区别。出口需要实现MonitorExit我无法做到的接口。

这个问题也可能属于超级用户;我不确定。

4

1 回答 1

2

我试图重现您的问题,但我可以使用后源程序调用成功运行 Java 程序(打包为 Jar 文件);这就是我相信你正在尝试做的事情。因此,我认为您的问题很可能是配置问题。

使用您提供的信息,您应该在代理的 agent.properties 文件中设置“commandPath”属性,如下所示:

commandPath=/opt/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">
...

请注意,这三个参数被拆分为单独的元素。

你能确保你的系统按照我上面描述的方式配置,然后再试一次,看看它是否能解决你的问题?

谢谢!

于 2014-10-01T19:17:05.677 回答