如何在 JBoss 里配置 IBM MQ

在本文中,我将告诉大家如何在JBoss里安装、配置WebSphere MQ资源适配器。

安装WebSphere MQ资源适配器:   
从安装目录复制wmq.jmsra.rar文件到服务器的部署目录中,例如:<安装路径>/server/default/deploy。此时资源适配器将会自动选择服务器。

安装WebSphere MQ扩展事务客户端:   
WebSphere MQ扩展事务客户端允许你使用XA分布式事务,并用客户端模式连接到WebSphere MQ队列管理器。要将客户端安装在JBoss,需要从安装目录复制com.ibm.mqetclient.jar文件到服务器的lib目录中,例如<安装路径>/server/default/lib。

为你的应用程序配置资源适配器:   
WebSphere MQ资源适配器允许你定义一些全局的属性。在JBoss中JCA出站流的资源定义在-ds.xml文件,名为wmq.jmsra-ds.xml。
此文件的概要如下:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <connection-factories>
3   <!-- mbeans defining JCA administered objects -->
4   <mbean/>
5   <!-- JCA Connection factory definitions -->
6   <tx-connection-factory/>
7 </connection-factories>

从上可以看出JCA连接工厂的定义在<tx-connection-factory>元素,而且JMS队列和主题被定义在JCA的管理对象mbean里面。

简单的两个队列-入站和出站的完整示例如下:

01 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
02 <connection-factories>
03     <tx-connection-factory>
04         <jndi-name>jms/MyAppConnectionFactory</jndi-name>
05         <rar-name>wmq.jmsra.rar</rar-name>
06         <use-java-context>true</use-java-context>
07         <connection-definition>javax.jms.QueueConnectionFactory</connection-definition>
08         <min-pool-size>8</min-pool-size>
09         <max-pool-size>36</max-pool-size>
10         <config-property type="java.lang.String" name="channel">${channel}</config-property>
11         <config-property type="java.lang.String" name="hostName">${hostName}</config-property>
12         <config-property type="java.lang.String" name="port">1414</config-property>
13         <config-property type="java.lang.String"name="queueManager">${queueManager}</config-property>
14         <config-property type="java.lang.String"name="transportType">CLIENT</config-property>
15         <config-property type="java.lang.String" name="username">munish</config-property>
16         <security-domain-and-application>JmsXARealm</security-domain-and-application>
17         <xa-transaction/>
18     </tx-connection-factory>
19     <mbean name="imq.queue:name=MY.APP.INBOUND.QUEUE"code="org.jboss.resource.deployment.AdminObject" >
20   <attribute name="JNDIName">jms/IncomingQueue</attribute>
21   <depends optional-attribute-name="RARName">jboss.jca:name='wmq.jmsra.rar',service=RARDeployment</depends>
22   <attribute name="Type">javax.jms.Queue</attribute>
23   <attribute name="Properties">
24    baseQueueManagerName=${queueManager}
25    baseQueueName=MY.APP.INBOUND.QUEUE
26     </attribute>
27     </mbean>
28     <mbean name="imq.queue:name=MY.APP.OUTBOUND.QUEUE"code="org.jboss.resource.deployment.AdminObject">
29         <attribute name="JNDIName">jms/OutgoingQueue</attribute>
30         <depends optional-attribute-name="RARName">jboss.jca:name='wmq.jmsra.rar',service=RARDeployment</depends>
31         <attribute name="Type">javax.jms.Queue</attribute>
32         <attribute name="Properties">
33             baseQueueManagerName=${queueManager}
34             baseQueueName=MY.APP.OUTBOUND.QUEUE
35         </attribute>
36     </mbean>
37 </connection-factories>

在JBoss启动脚本中占位符属性被定义为:
-Dchannel=MQTEST -DhostName=localhost -DqueueManager=TST_MGR

配置入站消息传递: 
消息传递配置在jboss.xml文件中,这个文件的内容会有所不同,但大致如下:
jboss.xml

01 <jboss xmlns="http://www.jboss.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
02  xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee
03  http://www.jboss.org/j2ee/schema/jboss_5_0.xsd" version="5.0">
04  <enterprise-beans>
05   <message-driven>
06    <ejb-name>MyMessageBean</ejb-name>
07     <!--  Make sure following System properties are defined in JBoss before deploying the application   -->
08      <activation-config>
09                      <activation-config-property>
10                              <activation-config-property-name>DestinationType</activation-config-property-name>
11                              <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
12                      </activation-config-property>
13                      <activation-config-property>
14                              <activation-config-property-name>destination</activation-config-property-name>
15                              <activation-config-property-value>MY.APP.INBOUND.QUEUE</activation-config-property-value>
16                      </activation-config-property>
17                      <activation-config-property>
18                              <activation-config-property-name>channel</activation-config-property-name>

你可能感兴趣的:(jboss)