在Tomcat 6.0下用JNDI连接IBM MQ 6.0的配置方法

 

为了便于在Tomcat 6.0上直接使用IBM MQ 6.0(无须将M2M应用部署在WAS上),以提高测试的效率,本文整理了在Tomcat下用JNDI连接IBM MQ的配置方法。

 

假设在MQ中定义的队列管理器的名为QueueManager, 端口1414 CCSID 437 ,队列名为userMsgQueue, gwMsgQueue 服务器通道名为FA

 

1.确保在项目的Classpath中导入了以下的jar包:

com.ibm.mq.jar     ( %WebSphere MQ Root% /Java/lib/ )

com.ibm.mqjms.jar  ( %WebSphere MQ Root% /Java/lib/ )

connector.jar        ( %WebSphere MQ Root% /Java/lib/ )

dhbcore.jar         ( %WebSphere MQ Root% /Java/lib/ )

geronimo-j2ee-management_1.0_spec-1.0.jar

geronimo-jms_1.1_spec-1.0.jar

jta.jar

 

本文的测试程序使用springJmsTemplate方式来操作MQ,所以还需要导入

spring.jarcommons-logging.jar

 

2Tomcat的配置

Tomcat的安装目录下,找到conf子目录下的context.xml, 默认情况下该文件的内容为:

<!-- The contents of this file will be loaded for each web application -->

<Context>  

    <!-- Default set of monitored resources -->

    <WatchedResource>WEB-INF/web.xml</WatchedResource>      

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

    <!--    <Manager pathname="" />  -->

</Context>

 

将其修改为:

<!-- The contents of this file will be loaded for each web application -->

<Context>

    <!-- Default set of monitored resources -->

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

      

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

    <!--

    <Manager pathname="" />

    -->

  <!—连接工厂定义-->

  <Resource

     name="jms/queueConnectionFactory"

     auth="Container"

     type="com.ibm.mq.jms.MQConnectionFactory"

     factory="com.ibm.mq.jms.MQConnectionFactoryFactory"

     description="JMS Queue Connection Factory for sending messages"

     HOST="127.0.0.1"

     PORT="1414"

     CHAN="FA"

     TRAN="1"

     CCSID="437"

     QMGR="QueueManager"

     />

   

<!—队列定义-->

   <Resource

      name="jms/gwMsgQueue"

      auth="Container"

      type="com.ibm.mq.jms.MQQueue"

      factory="com.ibm.mq.jms.MQQueueFactory"

      description="JMS Queue for receiving messages from Dialog"

      QU="gwMsgQueue"

      CCSID="437"

     />

    

     <Resource

      name="jms/userMsgQueue"

      auth="Container"

      type="com.ibm.mq.jms.MQQueue"

      factory="com.ibm.mq.jms.MQQueueFactory"

      description="JMS Queue for receiving messages from Dialog"

      QU="userMsgQueue"

      CCSID="437"

     />

</Context>

 

也就是在Context元素下新增Resource子元素。

Resource元素中,根据具体环境不同需要修改的属性有:

Name JNDI的名称

HOST 主机名

PORT 队列管理器的端口号

CHAN:服务器通道名

CCSID:编码字符集标识

QMGR:队列管理器名

QU   队列名

 

 

3.应用程序的配置

web.xml中加入以下内容:

 

<!—连接工厂的JNDI引用-->

 

<resource-env-ref>

     <resource-env-ref-name> jms/queueConnectionFactory</resource-env-ref-name>

     <resource-env-ref-type> javax.jms.QueueConnectionFactory</resource-env-ref-type>

</resource-env-ref>

 

<!—队列的JNDI引用-->

 

<resource-env-ref>

    <resource-env-ref-name>jms/gwMsgQueue</resource-env-ref-name>

    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>

 </resource-env-ref>

 

  <resource-env-ref>

           <resource-env-ref-name>jms/userMsgQueue</resource-env-ref-name>

    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>

</resource-env-ref>

测试程序使用了spring JmsTemplate方式操作MQ,在spring配置文件中JMS资源定义部分为:

 

<!-- 连接工厂定义 -->

<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">

     <property name="jndiName">

               <value>java:comp/env/jms/queueConnectionFactory</value>

      </property>

</bean>

<!-- 队列定义 -->

<bean id="testQueue" class="org.springframework.jndi.JndiObjectFactoryBean">

    <property name="jndiName" value="java:comp/env/jms/userMsgQueue" />

</bean>

 

<bean id="listenQueue" class="org.springframework.jndi.JndiObjectFactoryBean">

    <property name="jndiName" value="java:comp/env/jms/gwMsgQueue" />

</bean>

 

4.        MQ编码字符集的修改

MQ默认的编码字符集标识(CCSID)为1381,也就是简体中文编码,但是如果CCSID1381的话,在连接队列管理器时会出现错误,错误原因为CCSID不能识别(至于为什么1381不能识别还不清楚)。所以要修改CCSID,经过验证CCSID=437 (西欧字符编码)是可以连上队列管理器的,当然,队列管理器的CCSID应修改为CCSID,方法如下:

假如队列管理器名为QueueManager,

(1)    启动QueueManager

(2)    Dos命令行窗口下:

/>  runmqsc QueueManager  (回车)

ALTER QMGR FORCE CCSID(437)

 

End   (退出)

(3)    重启QueueManager

如果一切正常,QueueManagerCCSID会修改为437

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值