使用用户出口定制 MFT

您可以使用自己的程序 (称为用户出口例程) 来定制 Managed File Transfer 的功能。

重要信息: IBM®不支持用户出口中的任何代码,您的企业或提供该出口的供应商需要对该代码的任何问题进行初始调查。

Managed File Transfer 提供了代码中的点, Managed File Transfer 可以将控制权传递给您编写的程序 (用户出口例程)。 这些“点”被称为用户出口点。 然后, Managed File Transfer 可以在程序完成其工作后恢复控制。 您不必使用任何用户出口,但如果要扩展和定制 Managed File Transfer 系统的功能以满足您的特定需求,那么这些用户出口很有用。

在文件传输处理期间,有两个“点”可用于调用源系统的用户出口,还有两个“点”可用于调用目标系统的用户出口。 下表概述了以下各个用户出口点以及要使用用户出口而必须实现的 Java 接口。
表 1. 源端和目标端出口点以及 Java 接口的摘要
出口点 要实现的 Java 接口
源端出口点:
整个文件传输开始前 SourceTransferStartExit.java 接口
整个文件传输完成后 SourceTransferEndExit.java 接口
目标端出口点:
整个文件传输开始前 DestinationTransferStartExit.java 接口
整个文件传输完成后 DestinationTransferEndExit.java 接口
用户出口的调用顺序如下:
  1. SourceTransferStartExit
  2. DestinationTransferStartExit
  3. DestinationTransferEndExit
  4. SourceTransferEndExit
SourceTransferStartExit 出口和 DestinationTransferStartExit 出口产生的更改会作为对后续出口的输入而传播。 例如,如果 SourceTransferStartExit 出口修改了传输元数据,这些更改会反映在对其他出口的输入传输元数据中。
用户出口和程序调用按以下顺序进行调用:
- SourceTransferStartExit(onSourceTransferStart).
- PRE_SOURCE Command.
- DestinationTransferStartExits(onDestinationTransferStart).
- PRE_DESTINATION Command.
- The Transfer request is performed.
- DestinationTransferEndExits(onDestinationTransferENd).
- POST_DESTINATION Command.
- SourceTransferEndExits(onSourceTransferEnd.
- POST_SOURCE Command.
注:
  1. 仅当传输成功或部分成功完成时,才会运行 DestinationTransferEndExits
  2. 仅当传输成功或部分成功完成时,才会运行 postDestinationCall
  3. 针对成功、部分成功或失败的传输运行 SourceTransferEndExits
  4. 仅在以下情况下调用 postSourceCall
    • 未取消该传输。
    • 存在成功或部分成功的结果。
    • 任何目标后传输程序已成功运行。

构建用户出口

用于构建用户出口的接口包含在 MQ_INSTALL_DIRECTORY/mqft/lib/com.ibm.wmqfte.exitroutines.api.jar 中。 构建出口时,您必须在类路径中包含该 .jar 文件。 要运行出口,请作为 .jar 文件抽取出口,然后将该 .jar 文件置于后面部分中描述的目录中。

用户出口位置

您可以在以下两个可能位置中存储用户出口例程:
  • exits 目录。 每个代理目录下存在一个 exits 目录。 例如:var\mqm\mqft\config\QM_JUPITER\agents\AGENT1\exits
  • 您可以设置 exitClassPath 属性来指定一个备用位置。 如果 exits 目录和 exitClassPath 设置的类路径中存在出口类,那么 exits 目录中的类优先,这意味着如果两个位置中有同名的类,那么 exits 目录中的类优先。

配置代理以使用用户出口

有四种代理属性可进行设置用以指定代理调用的用户出口。 这些代理程序属性为 sourceTransferStartExitClassessourceTransferEndExitClassesdestinationTransferStartExitClassesdestinationTransferEndExitClasses。 有关如何使用这些属性的信息,请参阅 MFT 用户出口的代理程序属性

在协议网桥代理上运行用户出口

当源代理调用出口时,它会向出口传递要传输的源项目列表。 对于一般代理,这是标准文件名列表。 因为这些文件应为本地文件(或可通过安装进行访问),所以出口能够对其进行访问和加密。

但是,对于协议网桥代理,列表中的条目为以下格式:
"<file server identifier>:<fully-qualified file name of the file on the remote file server>"

对于列表中的每个条目,出口需要首先连接到文件服务器(使用 FTP、 FTPS 或 SFTP 协议)、下载文件、在本地对其加密,然后将加密后的文件重新上载到文件服务器。

Connect:Direct 网桥代理上运行用户出口

无法在 Connect:Direct® 网桥代理上运行用户出口。