这意味着什么commit():非事务会话非法:sessionId

时间:2013-06-03 07:20:41

标签: glassfish jms

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

继续收到此错误消息:

  

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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