`

Tomcat6+spring+IBM MQ

 
阅读更多
1在Tomcat 6.0下用JNDI连接IBM MQ 6.0的配置方法
http://blog.csdn.net/justin4wd/article/details/2957670

其中有两个jar包比较难找,
然后MQ默认的编码字符集标识(CCSID)为1381,必须得改没办法
记得发送和接受的两个队列管理器要改一致,不然还是无法发送
runmqsc QM(队列管理器名称)
dis qmgr (可以看CCSID)
(1)    启动QueueManager
(2)    在Dos命令行窗口下:
\>  runmqsc QueueManager  (回车)
ALTER QMGR FORCE CCSID(437)
 
End   (退出)
(3)    重启QueueManager
如果一切正常,QueueManager的CCSID会修改为437




2第二个问题,没有权限的问题
MQJMS2013: 提供了 MQQueueManager 的无效安全性认证
引用

如下右击你的通道名称,然后点击属性,在弹出的窗口里面选择MCA,并在MCA用户表示处输入:MUSR_MQADMIN



MQ7.0 在WAS中配置队列链接工厂并测试连接报2035错误
http://blog.csdn.net/javalover_yao/article/details/6387460
修改了MCA 然后终于可以了

后续...


关于jndiTemplate
网上的介绍ActiveMQ的最多
确少有IBM MQ和tomat
后面测了下,其实tomcat下的定义是这样的,呵呵(同义词)
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate" />

Spring 系列:Spring JMS 消息处理(关于IBM MQ)
http://www.knowsky.com/350313.html
引用

3. JNDI 查询的 JNDI 模板配置

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
      <props>
        <prop key="java.naming.factory.initial">
            com.sun.jndi.fscontext.RefFSContextFactory
        </prop>
        <prop key="java.naming.provider.url">
            file:/C:/JNDI-Directory
        </prop>
      </props>
    </property>
  </bean>

以上配置进行 JNDI 查询时用 com.sun.jndi.fscontext.RefFSContextFactory 指定初始上下文工厂,用基于文件的 file:/C:/JNDI-Directory 作为提供者 URL。根据示例应用程序的意图,JNDI 访问会采用基于文件的 FSContext 版本(请参阅 参考资料)的配置把 MQ 队列绑定到 JNDI。



部署到was7 上,定义哈了队列管理器等资源
报了
引用

Caused by: javax.jms.IllegalStateException: Method setExceptionListener not permitted
at com.ibm.ejs.jms.JMSCMUtils.methodNotPermittedException(JMSCMUtils.java:253)
at com.ibm.ejs.jms.JMSConnectionHandle.checkRestrictedMethod(JMSConnectionHandle.java:834)
at com.ibm.ejs.jms.JMSConnectionHandle.setExceptionListener(JMSConnectionHandle.java:335)
at org.springframework.jms.listener.SimpleMessageListenerContainer.prepareSharedConnection(SimpleMessageListenerContainer.java:234)
at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:406)
at org.springframework.jms.listener.AbstractJmsListeningContainer.establishSharedConnection(AbstractJmsListeningContainer.java:372)
at org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:279)
at org.springframework.jms.listener.SimpleMessageListenerContainer.doStart(SimpleMessageListenerContainer.java:224)
at org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:264)
... 110 more


跟了下代码跟IBM的
Sring3.1.1 SimpleMessageListenerContainer类的这个方法保错
@Override
protected void prepareSharedConnection(Connection connection) throws JMSException {
		super.prepareSharedConnection(connection);
		[color=red]connection.setExceptionListener(this);[/color]	}

IBM的没有这个权限??

修改了spring jms的配置为default,不用simple了
正常启动,仍然接受不到信息
引用

[12-10-15 15:50:22:237 CST] 000000ee DefaultMessag W org.springframework.jms.listener.DefaultMessageListenerContainer handleListenerSetupFailure Setup of JMS message listener invoker failed for destination 'java:comp/env/jms/recQueue' - trying to recover. Cause: Destination [java:comp/env/jms/recQueue] not found in JNDI; nested exception is javax.naming.ConfigurationException: A JNDI operation on a "java:" name cannot be completed because the server runtime is not able to associate the operation's thread with any J2EE application component.  This condition can occur when the JNDI client using the "java:" name is not executed on the thread of a server application request.  Make sure that a J2EE application does not execute JNDI operations on "java:" names within static code blocks or in threads created by that J2EE application.  Such code does not necessarily run on the thread of a server application request and therefore is not supported by JNDI operations on "java:" names. [Root exception is javax.naming.NameNotFoundException: Name comp/env/jms not found in context "java:".]
[12-10-15 15:50:22:241 CST] 000000ee DefaultMessag I org.springframework.jms.listener.DefaultMessageListenerContainer refreshConnectionUntilSuccessful Successfully refreshed JMS Connection



解决是
websphere下destination="jms/recQueue"
不要加 java:comp/env/
但是tomcat需要
<jms:listener-container connection-factory="jmsConnectionFactory"
		container-type="default" destination-resolver="destinationResolver">
		<jms:listener destination="java:comp/env/jms/recQueue" ref="roneMessageListener" />
	</jms:listener-container>
分享到:
评论

相关推荐

    Spring Boot + RWD + JMS/MQ

    对于MQ,如IBM WebSphere MQ或RabbitMQ,Spring Boot也有相应的适配器来简化整合。 将这三个技术结合在一起,我们可以构建一个高效、响应式的Web应用,同时利用消息队列处理后台任务。例如,Spring Boot可以作为...

    spring jms tomcat 异步消息传递入门实例

    2. **Tomcat与JMS**:虽然Tomcat本身并不直接支持JMS,但可以在Tomcat中部署一个支持JMS的容器,如Apache ActiveMQ或IBM WebSphere MQ。这些服务器将作为消息代理,接收和分发消息。在Tomcat中配置JMS,需要在`...

    spring-framework-3.1.0.M2

    它提供了与各种消息中间件的集成,如ActiveMQ、IBM MQ等,使应用程序能够实现异步通信和解耦,提高系统的可扩展性和可靠性。 `org.springframework.test-3.1.0.M2.jar`则是Spring的测试模块,包含用于单元测试和...

    Spring JMS 消息处理-基于JNDI

    消息中间件如ActiveMQ、RabbitMQ、IBM WebSphere MQ等,通过JMS接口与应用程序交互。 Spring JMS是Spring框架对JMS的封装,它提供了一种声明式的方式来配置JMS模板、监听容器等,极大地简化了开发者的任务。Spring ...

    架构规范 SSH 框架

    此外,服务层包括 Tomcat、Apache、Websphere 和 IBM MQ,这些都需符合规范以保证系统的稳定运行。 在模块规范上,SSH 框架划分了通用基础模块和业务基础模块。通用基础模块主要处理非业务相关的功能,如日志管理、...

    工作流引擎-选型 (各工作流对比)

    - IBM WPS / IBM BPM / IBM MQ Workflow / IBM Lotus Notes - Oracle BPM - Software AG Webmethods - Pega BPM **4.2 Flowable 的兼容性** Flowable目前主要支持与以下几种工作流技术兼容: - Alfresco Activiti5...

    Java技术应用集订分送风刀霜剑发大水了

    - **Spring**: 掌握Spring框架的核心模块,包括DI、AOP、Spring MVC等,能够构建基于Spring的应用系统。 - **Struts**: 熟悉Struts框架的工作机制和组件,能够使用Struts进行MVC模式的应用开发。 ### 三、服务器与...

    WebSphere+Application+Server+常见问题及解答

    - **使用依赖注入**:通过依赖注入框架如Spring或CDI来管理组件之间的依赖关系。 - **异常处理**:合理处理异常情况,确保应用程序的健壮性。 - **安全编码**:遵循安全编码指南,防止常见的安全漏洞。 #### 五、...

Global site tag (gtag.js) - Google Analytics