IBM MQ 资源适配器支持声明

必须用于应用程序与队列管理器之间通信的 IBM® MQ 资源适配器取决于您是使用 Jakarta Messaging 3.0 API 还是 JMS 2.0 API。

[JMS 2.0 ]IBM MQ 8.0 或更高版本随附用于实现 JMS 2.0 规范的资源适配器。 它只能部署到符合 Java Platform, Enterprise Edition 7 (Java EE 7) 的应用程序服务器中,因此支持 JMS 2.0Java Platform, Enterprise Edition 的认证应用程序服务器列表在 Oracle的 Web 站点上进行维护。

[MQ 9.3.0 2022 年 6 月][MQ 9.3.0 2022 年 6 月][Jakarta Messaging 3.0 ]IBM MQ 9.3.0开始, Jakarta Messaging 3.0 支持用于开发新应用程序。 IBM MQ 9.3.0 继续支持现有应用程序的 JMS 2.0 。 除了支持 Java EEJMS 2.0的资源适配器外, IBM MQ 9.3.0 还提供了支持 Jakarta Messaging的资源适配器。 不支持在同一应用程序中同时使用 Jakarta Messaging 3.0 API 和 JMS 2.0 API。 有关更多信息,请参阅 使用 IBM MQ classes for JMS

WebSphere Liberty 中部署

WebSphere® Liberty 8.5.5 Fix Pack 6 和更高版本以及 WebSphere Application Server Liberty 9.0 和更高版本是 Java EE 7 认证的应用程序服务器,因此可以将 IBM MQ 9.0 资源适配器部署到这些服务器中。

[MQ 9.3.0 2022 年 6 月][MQ 9.3.0 2022 年 6 月]要将 Jakarta MessagingIBM MQ 资源适配器与 Liberty配合使用,必须使用支持 Jakarta EELiberty 版本。

WebSphere Liberty 具有可用于处理资源适配器的以下功能部件:
  • [MQ 9.3.0 2022 年 6 月][MQ 9.3.0 2022 年 6 月][Jakarta Messaging 3.0 ]允许使用 Jakarta Messaging 3.0 资源适配器的 messaging-3.0 功能部件。
  • wmqJmsClient-2.0 功能部件允许使用 JMS 2.0 资源适配器。
  • wmqJmsClient-1.1 功能部件允许使用 JMS 1.1 资源适配器。
重要说明:
  • [MQ 9.3.0 2022 年 6 月][MQ 9.3.0 2022 年 6 月][Jakarta Messaging 3.0 ]必须将 Jakarta MessagingIBM MQ 资源适配器部署到支持 Jakarta EELiberty 版本中。 此资源适配器不能与支持较旧的 Java EE 规范而不是 Jakarta EELiberty 版本配合使用。
  • [JMS 2.0 ]必须使用 wmqJmsClient-2.0 功能部件部署支持 JMS 2.0IBM MQ 8.0 或更高版本资源适配器。

WebSphere Application Server 中部署

WebSphere Application Server 9.0 随附已安装的 IBM MQ 9.0 资源适配器。 因此,无需安装新资源适配器。 已安装的资源适配器可以使用 CLIENT 或 BINDINGS 传输方式连接到在受支持版本的 IBM MQ上运行的任何队列管理器。 有关更多信息,请参阅 连接到 IBM MQ 8.0 或更高版本的队列管理器

重要说明:
  • IBM MQ 9.0 资源适配器无法部署到 IBM MQ 9.0之前的 WebSphere Application Server 版本中,因为这些版本未经 Java EE 7 认证。
  • [Jakarta Messaging 3.0 ] WebSphere Application Server 当前不支持 Jakarta EE
有关 WebSphere Application Server随附的资源适配器版本的更多信息,请参阅技术说明 WebSphere Application Server随附了哪个版本的 WebSphere MQ 资源适配器 (RA)?

将资源适配器与其他应用程序服务器结合使用

对于所有其他符合 Java EE 7 Jakarta EE 的应用程序服务器,可以向 IBM 报告 IBM MQ 资源适配器 安装验证测试 (IVT) 成功完成后发生的问题,以调查 IBM MQ 产品跟踪和其他 IBM MQ 诊断信息。 如果无法成功运行 IBM MQ 资源适配器 IVT ,那么迂到的任何问题都可能是由不正确的部署或不正确的特定于应用程序服务器的资源定义引起的,必须使用应用程序服务器文档和该应用程序服务器的支持组织来调查这些问题。

Java 运行时

用于运行应用程序服务器的 Java 运行时 (JRE) 必须是受 IBM MQ 9.0 或更高版本客户机支持的运行时。 有关更多信息,请参阅 IBM MQ的系统需求。 (选择要查看的版本和操作系统或组件报告,然后进入支持软件选项卡下方列出的 Java 链接。)

IBM MQ 8.0 或更高版本队列管理器的连接

使用已部署到 Java EE 7 认证的应用程序服务器中的资源适配器连接到 IBM MQ 8.0 或更高版本的队列管理器时,提供了完整范围的 JMS 2.0 功能。 要使用 JMS 2.0 功能,资源适配器需要使用 IBM MQ 消息传递提供程序正常方式连接到队列管理器。 有关更多信息,请参阅 配置 JMS PROVIDERVERSION 属性

[MQ 9.3.0 2022 年 6 月][MQ 9.3.0 2022 年 6 月][Jakarta Messaging 3.0 ]使用已部署到 Jakarta EE 认证应用程序服务器中的资源适配器连接到 IBM MQ 9.3 队列管理器时, Jakarta Messaging 3.0 功能的完整范围可用。

MQ 扩展名

JMS 2.0 规范引入了对特定行为工作方式的更改。 由于 IBM MQ 8.0 或更高版本实现了此规范,因此 IBM MQ 8.0 与更高版本以及产品的较低版本之间的行为发生了更改。 在 IBM MQ 8.0 或更高版本中, IBM MQ classes for JMS 包含对 Java 系统属性 com.ibm.mq.jms.SupportMQExtensions 的支持,当设置为 TRUE时,会使这些版本的 IBM MQ 将这些行为还原为 IBM WebSphere MQ 7.5 或更低版本的行为。 属性的缺省值是 FALSE

IBM MQ 9.0 或更高版本的资源适配器还包含名为 supportMQExtensions 的资源适配器属性,其效果和缺省值与 com.ibm.mq.jms.SupportMQExtensions Java 系统属性相同。 缺省情况下,在 ra.xml 中将此资源适配器属性设置为 false。

如果同时设置了资源适配器属性和 Java 系统属性,那么系统属性具有优先顺序。

请注意,在 WebSphere Application Server 9.0中已部署的资源适配器中,此属性会自动设置为 TRUE 以帮助迁移。

有关更多信息,请参阅 SupportMQExtensions 属性

一般问题

不支持会话交错功能
某些应用程序服务器提供了称为 "会话交错" 的功能,在此功能中,可以在多个事务中使用相同的 JMS 会话,尽管它一次只能参与一个事务。 IBM MQ 资源适配器不支持此功能,这可能会导致以下问题:
尝试将消息放入 MQ 队列失败,原因码 2072 (MQRC_SYNCPOINT_NOT_AVAILABLE)。
调用xa_close()失败,原因代码为 -3 (XAER_PROTO),从应用程序服务器访问的 IBM MQ 队列管理器上生成了一个探测ID为 AT040010 的FDC。 有关如何禁用此功能的信息,请参阅您的应用程序服务器文档。
Java Transaction API (JTA) 规范如何恢复 XA 资源以进行 XA 事务恢复
JTA 规范的第 3.4.8 节未定义用于重新创建 XA 资源以执行 XA 事务恢复的特定机制。 这样,XA 事务中涉及的 XA 资源的恢复方式由每个单个事务管理器(以及应用程序服务器)决定。 对于某些应用程序服务器, IBM MQ 9.0 资源适配器可能未实现用于执行 XA 事务恢复的特定于应用程序服务器的机制。
匹配 ManagedConnectionFactory 中的连接
应用程序服务器可以在 IBM MQ 资源适配器提供的 ManagedConnectionFactory上调用 matchManagedConnections。 只有当此方法发现与应用程序服务器传递给此方法的 javax.security.auth.Subjectjavax.resource.spi.ConnectionRequestInfo 自变量都匹配的一个项时,才会返回 ManagedConnection。