21.9. 配置通用的 JMS 资源适配器以用于第三方的 JMS 供应商
概述
您可以配置 JBoss EAP 6 和第三方的 JMS 供应商一起使用,然而不是所有的 JMS 供应商都为集成 Java 应用程序而编写 JMS JCA 资源适配器。这个过程涵盖了配置 JBoss EAP 6 里包含的通用 JMS 资源适配器来连接 JMS 供应商的步骤。在这个过程里,Tibco EMS 6.3 用作示例 JMS 供应商,其他的 JMS 供应商需要不同的配置。
重要
通用 JMS JCA 资源适配器只应该在 JMS 供应商没有提供自己的资源适配器时才使用。在使用通用 JMS 资源适配器之前,您应该首先检查 JMS 供应商是否有可用于 JBoss EAP 6 的自己的资源适配器。
前提条件
这个过程假设 JMS 供应商服务器已配置好并已准备好运行。您需要准备这个供应商的 JMS 实现所需的任何二进制文件。您也需要知道下列 JMS 供应商属性的值:
- PROVIDER_HOST:PROVIDER_PORT:JMS 供应商服务器的主机名和端口号。
- PROVIDER_CONNECTION_FACTORY:JMS 供应商上连接工厂的名称。
- PROVIDER_QUEUE, PROVIDER_TOPIC:要使用的 JMS 供应商的队列和主题的名称。
过程 21.10. 配置通用 JMS 资源适配器
- 为队列和主题的 JNDI 绑定创建一个
ObjectFactory
实现:- 将下列内容作为模版,用您自己的 JMS 供应商服务器的值替换服务器细节。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 编译上面的代码,并将生成的类文件保存在
remoteJMSObjectFactory.jar
里。
- 为你的 JBoss EAP 6 实例创建一个
genericjms
模块:- 创建下列目录结构:
EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main
- 复制
remoteJMSObjectFactory.jar
文件到EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main
。 - Copy the binaries required for the provider's JMS implementation to
EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main
. For Tibco EMS, the binaries required aretibjms.jar
andtibcrypt.jar
from the Tibco installation's/lib
directory. - 在
EAP_HOME/modules/system/layers/base/org/jboss/genericjms/provider/main
里创建一个module.xml
文件,将之前步骤里的 JAR 文件列为资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 通过全局模块的方式将通用 JMS 模块添加为所有部署的依赖关系。
注意
在这个过程里,EAP_HOME/standalone/configuration/standalone-full.xml
被用作 JBoss EAP 6 配置文件。在EAP_HOME/standalone/configuration/standalone-full.xml
的<subsystem xmlns="urn:jboss:domain:ee:1.1">
下添加:<global-modules> <module name="org.jboss.genericjms.provider" slot="main"/> <module name="org.jboss.common-core" slot="main"/> </global-modules>
<global-modules> <module name="org.jboss.genericjms.provider" slot="main"/> <module name="org.jboss.common-core" slot="main"/> </global-modules>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 用通用的资源适配器替换默认的 HornetQ 资源适配器。在
EAP_HOME/standalone/configuration/standalone-full.xml
里,下列内容替换<subsystem xmlns="urn:jboss:domain:ejb3:1.4"> <mdb>
:<mdb> <resource-adapter-ref resource-adapter-name="org.jboss.genericjms"/> <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> </mdb>
<mdb> <resource-adapter-ref resource-adapter-name="org.jboss.genericjms"/> <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> </mdb>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 因为远程对象是必需的,请为您的 JMS 主题和队列添加绑定。在
EAP_HOME/standalone/configuration/standalone-full.xml
里的<subsystem xmlns="urn:jboss:domain:naming:1.3">
下,添加绑定,并按需要替换 PROVIDER_QUEUE 和 PROVIDER_TOPIC:<bindings> <object-factory name="PROVIDER_QUEUE" module="org.jboss.genericjms.provider" class="org.jboss.qa.RemoteJMSObjectFactory"/> <object-factory name="PROVIDER_TOPIC" module="org.jboss.genericjms.provider" class="org.jboss.qa.RemoteJMSObjectFactory"/> </bindings>
<bindings> <object-factory name="PROVIDER_QUEUE" module="org.jboss.genericjms.provider" class="org.jboss.qa.RemoteJMSObjectFactory"/> <object-factory name="PROVIDER_TOPIC" module="org.jboss.genericjms.provider" class="org.jboss.qa.RemoteJMSObjectFactory"/> </bindings>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在
EAP_HOME/standalone/configuration/standalone-full.xml
里,添加通用资源适配器配置到<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
。用 JMS 供应商的值替换 PROVIDER_CONNECTION_FACTORY、PROVIDER_HOST 和 PROVIDER_PORT。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
结果
配置了通用的 JMS 资源适配器以供使用。
当创建新的 Message Driven Bean(MDB)时,请用类似下面的代码来使用资源适配器。用 JMS 供应商的值来替换 PROVIDER_CONNECTION_FACTORY、PROVIDER_HOST 和 PROVIDER_PORT。