假设在IBM MQ中定义的队列管理器的名为QueueManager, 端口1414,CCSID 437 ,创建名为LQ1,LQ2的队列分别用于发送和接收消息, 服务器连接通道名为SVRCONN。
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
如果需使用spring的JmsTemplate方式来读写MQ,还需要导入
spring.jar和commons-logging.jar
2.Tomcat的配置
在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="SVRCONN"
TRAN="1"
CCSID="437"
QMGR="QueueManager"
/>
<!—队列定义-->
<Resource
name="jms/sendMsgQueue"
auth="Container"
type="com.ibm.mq.jms.MQQueue"
factory="com.ibm.mq.jms.MQQueueFactory"
description="JMS Queue for sending messages to app"
QU="LQ1"
CCSID="437"
/>
<Resource
name="jms/recvMsgQueue"
auth="Container"
type="com.ibm.mq.jms.MQQueue"
factory="com.ibm.mq.jms.MQQueueFactory"
description="JMS Queue for receiving messages from app"
QU="LQ2"
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/sendMsgQueue</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/recvMsgQueue</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="sendQueue" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jms/sendMsgQueue" />
</bean>
<bean id="recvQueue" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jms/recvMsgQueue" />
</bean>
4. MQ编码字符集的修改
在中文系统下IBM MQ默认的编码字符集标识(CCSID)为1381,也就是简体中文编码。但是如果CCSID用1381的话,在Tomcat连接队列管理器时会出现错误,错误的Reason Code 为CCSID不能识别(至于为什么1381不能识别还不清楚),所以要修改CCSID。经过验证,CCSID=437 (西欧字符编码)可以连上队列管理器(貌似只要不是1381都能连,faint)。当然,IBM MQ里队列管理器的CCSID应修改为对应CCSID,方法如下:
假如队列管理器名为QueueManager,
(1) 启动QueueManager
(2) 在Dos命令行窗口下:
/> runmqsc QueueManager (回车)
ALTER QMGR FORCE CCSID(437)
End (退出)
(3) 重启QueueManager
如果一切正常,QueueManager的CCSID会修改为437
相关推荐
Tomcat 6.0 中通过 JNDI 连接 MySQL 实例需要进行详细的配置和设置。本文将对 Tomcat 6.0 中的 JNDI 连接 MySQL 实例进行详细的介绍和解释。 配置 JNDI 资源 在 Tomcat 6.0 中,需要在 `META-INF/context.xml` ...
在Tomcat6.0中配置JNDI,主要是为了实现应用中的数据源管理,使得多个应用可以共享一个数据库连接池,提高资源利用率和系统性能。 **一、JNDI的基本概念** JNDI提供了一个统一的接口,让开发者可以查找和绑定各种...
在Java应用服务器中,如Tomcat 6.0,配置JNDI(Java Naming and Directory Interface)的DBCP(Database Connection Pool)连接池是管理数据库连接的重要步骤。JNDI是一个标准接口,允许应用程序查找和访问命名服务...
在Java应用服务器中,Tomcat 6.0是一款广泛使用的轻量级服务器,它支持多种方式来连接数据库,其中一种常见的方法就是通过Java Naming and Directory Interface (JNDI)。JNDI允许开发者以统一的方式来查找和访问各种...
Tomcat 6.0数据库连接池驱动的使用,涉及到的主要知识点包括:数据库连接池的概念与作用,Tomcat内置的数据源实现(DBCP和C3P0),数据源的配置方法,JNDI的使用,以及在Java代码中获取和释放数据库连接。...
《深入理解Tomcat6.0:免费开源的JSP服务器》 Tomcat6.0,作为Apache软件基金会的旗下面向Java的Web应用服务器,以其免费开源的特性,深受开发者们的喜爱。它不仅是一个小巧而高效的JSP服务器,还包含了完整的HTTP...
在Java应用服务器中,如Tomcat 6.0,JNDI(Java Naming and Directory Interface)数据源是一种标准的方法来管理数据库连接。JNDI允许应用程序通过一个全局名称查找资源,比如数据源,而无需硬编码数据库连接参数。...
标题中的“Tomcat6.0配置JNDI数据源完整例子”是指在Apache Tomcat 6.0服务器中设置Java Naming and Directory Interface (JNDI)数据源的过程。JNDI是一个API,它允许应用程序查找和使用命名服务,如数据库连接池。...
标题“Tomcat6.0数据源配置”涉及的是在Apache Tomcat 6.0版本中设置和管理数据库连接池的过程。Tomcat作为一个流行的开源Java应用服务器,提供了多种数据源配置方式,以支持Web应用程序高效、安全地访问数据库。在...
2. **EJB轻量级集成**:尽管Tomcat是轻量级应用服务器,但Tomcat6.0开始支持EJB Lite,允许在不使用完整应用服务器的情况下使用部分企业级Java Bean功能。 3. **JNDI增强**:加强了Java Naming and Directory ...
Apache Tomcat 6.0 是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用程序规范,特别是Servlet和JSP标准。本教程将带你深入了解如何配置Apache Tomcat 6.0,以确保你能顺利地运行和管理Java Web应用...
**标题解析:**“Tomcat 6.0 64位”指的是Apache Tomcat服务器的第六个主要版本,专门设计用于64位操作系统环境。Tomcat是一个开源的应用服务器,主要用于部署Java Servlet和JavaServer Pages(JSP)应用程序。 **...
在本文中,我们将探讨如何在Tomcat 6.0、MyEclipse 6.0环境中配置与MySQL 5.0数据库的连接池。这个过程涉及到两个主要步骤:配置Tomcat的`context.xml`文件以及修改工程中的`web.xml`文件。 首先,我们来详细分析`...
《深入剖析Tomcat 6.0源代码》 Tomcat,作为Apache软件基金会的一个开源项目,是Java Servlet和JavaServer Pages(JSP)容器的首选,尤其在轻量级应用服务器领域,它以其高效、稳定和易用性而受到广泛的赞誉。...
Tomcat 6.0是Apache软件基金会开发的一款广泛使用的开源Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为Web应用程序提供了一个轻量级的运行环境。"lib"目录在Tomcat中扮演着至关重要的...
【描述】中的知识点:配置连接池可以避免频繁地创建和关闭数据库连接,减少系统资源消耗,尤其在高并发环境下至关重要。Tomcat的`context.xml`文件是配置应用程序上下文的元数据,包括数据源(DataSource)等资源的...
在Tomcat中,JNDI用于配置数据库连接池、邮件会话等资源。文档介绍了如何创建和管理这些资源,以及如何在应用中查找和使用它们。 五、监控(monitoring.html) 监控文档讲解了如何监控Tomcat服务器的运行状态,包括...
【标题】"Tomcat6.0压缩包"指的是Apache Tomcat服务器的一个特定版本,即6.0.16。Tomcat是一款开源的、基于Java Servlet和JavaServer Pages(JSP)技术的应用服务器,广泛用于搭建Java Web应用。它遵循Java EE规范中...