我正在使用glassfish服务器并使用该glassfish服务器的JMS功能。
继续收到此错误消息:
MQJMSRA_DS4001:commit():非事务会话非法:sessionId
我收到此错误消息的原因是什么?
答案 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))。 如果您不希望会话被处理,则应该从代码中删除提交/回滚,或者在执行之前填充全局变量。