IBM MQ classes for Java 中分配通道出口

您可以使用 IBM® MQ classes for Java分配通道出口。

IBM MQ classes for Java中没有与 IBM MQ 通道直接等效的通道。 通道出口将被分配给 MQQueueManager。 例如,定义了实现 WMQSecurityExit 接口的类之后,应用程序可以通过以下四种方式之一使用安全出口:
  • 通过向 MQEnvironment.channelSecurityExit 字段分配类实例,然后创建 MQQueueManager 对象
  • 通过将 MQEnvironment.channelSecurityExit 字段设置为表示安全出口类的字符串,然后创建 MQQueueManager 对象
  • 通过在传递给 MQQueueManager 的属性散列表中,使用键 CMQC.SECURITY_EXIT_PROPERTY 创建键/值对
  • 使用客户机通道定义表 (CCDT)

通过将 MQEnvironment.channelSecurityExit 字段设置为字符串、在属性散列表中创建键/值对或使用 CCDT 分配的任何出口,都必须使用缺省构造函数来编写。 作为类实例分配的出口不需要缺省构造函数,具体取决于应用程序。

应用程序可以通过相似的方法使用发送或接收出口。 例如,以下代码片段为您展示了如何通过 MQEnvironment 使用在类 MyMQExits(之前定义的)中实现的安全、发送和接收出口:
 MyMQExits myexits = new MyMQExits();
 MQEnvironment.channelSecurityExit = myexits;
 MQEnvironment.channelSendExit = myexits;
 MQEnvironment.channelReceiveExit = myexits;
 :
 MQQueueManager jupiter = new MQQueueManager("JUPITER");
如果使用了多种方法分配通道出口,那么优先顺序如下所示:
  1. 如果将 CCDT 的 URL 传递给 MQQueueManager,那么 CCDT 的内容将确定要使用的通道出口,并且将忽略 MQEnvironment 或属性散列表中的任何出口定义。
  2. 如果没有传递 CCDT URL,那么将合并 MQEnvironment 和散列表中的出口定义。
    • 如果在 MQEnvironment 和散列表中定义了相同的出口类型,那么将使用散列表中的定义。
    • 如果指定了同等的新旧退出类型(例如,"sendExit字段只能用于比 "IBM WebSphere® MQ 7.0更早的版本中使用的退出类型,而 "channelSendExit字段可用于任何发送退出),则会使用新的退出(channelSendExit)而不是旧的退出。
如果已将通道出口声明为字符串,那么必须启用 IBM MQ 以找到通道出口程序。 您可以通过多种方法执行此操作,具体取决于应用程序所运行的环境以及通道出口程序的打包方式。
  • 对于正在应用程序服务器中运行的应用程序,必须将这些文件存储在 表 1 中显示的目录中或打包在 exitClasspath引用的 JAR 文件中。
  • 对于不在应用程序服务器中运行的应用程序,以下规则适用:
    • 如果您的通道出口类被打包在独立的 JAR 文件中,这些 JAR 文件必须包含在 exitClasspath 中。
    • 如果通道出口类未打包在 JAR 文件中,那么类文件可以存储在 表 1 中显示的目录中,也可以存储在 JVM 系统类路径或 exitClasspath中的任何目录中。
可以通过四种方法指定 exitClasspath 属性。 这些方法按优先级顺序显示如下:
  1. 系统属性 com.ibm.mq.exitClasspath(使用 -D 选项在命令行中定义)
  2. mqclient.ini 文件的 exitPath 节
  3. 键为 CMQC.EXIT_CLASSPATH_PROPERTY 的散列表条目
  4. MQEnvironment 变量 exitClasspath
多个路径将使用 java.io.File.pathSeparator 字符分隔。
表 1. 通道出口程序的目录
平台 目录

[AIX] AIX®

[Linux] Linux®

/var/mqm/exits(32 位通道出口程序)

/var/mqm/exits64(64 位通道出口程序)

Windows install_data_dir\exit
注: install_data_dir 是您在安装期间为 IBM MQ 数据文件选择的目录。 缺省目录为 C:\ProgramData\IBM\MQ