0

我正在使用 glassfish 服务器并使用该 glassfish 服务器的 JMS 功能。

继续收到此错误消息:

MQJMSRA_DS4001:commit():非事务会话非法:sessionId

我收到此错误消息的原因是什么?

4

2 回答 2

0

您收到该错误的原因是您的 Session is not transacted 。这意味着提交/回滚方法毫无意义。尝试在创建会话时将会话设置为已处理(例如 connection.createSession( true , Session.AUTO_ACKNOWLEDGE))。如果你不希望你的会话被处理,你应该从代码中删除提交/回滚,或者在执行之前检查一个全局变量。

于 2013-09-17T13:04:15.337 回答
0

您可以使用 TransactionAwareConnectionFactoryProxy

配置不使用原始供应商提供的 ConnectionFactory,而是将 ConnectionFactory 包装在处理事务同步的装饰器中。这发生在 jms-context.xml 中,如下所示:-

<bean id="connectionFactory" class="org.springframework.jms.connection.TransactionAwareConnectionFactoryProxy">
        <property name="targetConnectionFactory" ref="myCamelConnectionFactory"/>
</bean>

<jee:jndi-lookup id="myconnectionFactory" jndi-name="SoDConflictConnFactory"/>

这将删除警告消息:- MQJMSRA_DS4001

于 2013-09-17T10:05:18.607 回答