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

Glassfish 这意味着什么?commit():对于非事务会话非法:sessionId,glassfish,jms,Glassfish,Jms,我正在使用glassfish服务器,并使用glassfish服务器的JMS功能 继续获取此错误消息: MQJMSRA_DS4001:commit():对于非事务会话非法:sessionId 我收到此错误消息的原因是什么?您可以使用TransactionWareConnectionFactoryProxy 该配置没有使用原始供应商提供的ConnectionFactory,而是将ConnectionFactory包装在处理事务同步的装饰器中。这在jms-context.xml中发生,如下所示:- &

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

继续获取此错误消息:

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


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

您可以使用TransactionWareConnectionFactoryProxy

该配置没有使用原始供应商提供的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

出现该错误的原因是您的会话未被处理。这意味着提交/回滚方法没有意义。尝试在创建会话时将其设置为已事务化(例如,connection.createSession(true,session.AUTO_-ACKNOWLEDGE))。
如果您不希望您的会话被处理,您应该从代码中删除提交/回滚,或者在执行之前检查一个全局变量

这将有助于提供导致此问题的代码、连接器配置、端点(队列/主题)配置等的更多详细信息/摘录。在高层,这意味着当您不在事务中时,您正在尝试执行特定于事务的操作(如提交/回滚)。需要更多细节才能给出更具体的答案。