[在使MQ连接在Liberty中工作时,我遇到以下问题。
收到消息后,发生以下错误:JMSCC0014:在非事务会话上调用'commit'方法无效。
我已经进行了一些搜索,发现了一些需要使用XA版本的连接工厂的信息,但是我不知道这是否确实是解决方案,并且我还没有找到任何清晰的示例来说明如何实现这一点。我的配置。
这是server.xml配置的相关部分:
<resourceAdapter id="mqJms" location="/etc/liberty/wmq/wmq.jmsra.rar"/>
<authData id="mqJms.auth" user="user" password="password"/>
<jmsQueueConnectionFactory jndiName="jms/queueConnectionFactory" connectionManagerRef="ConMgr4" containerAuthDataRef="mqJms.auth">
<properties.mqJms transportType="CLIENT"
hostName="server" port="1234"
channel="CHANNEL"/>
</jmsQueueConnectionFactory>
<connectionManager id="ConMgr4"
connectionTimeout="30s"
maxPoolSize="50" minPoolSize="1"
reapTime="60s" agedTimeout="0"/>
<jmsQueue id="jms/incomingRequestQueue" jndiName="jms/incomingRequestQueue">
<properties.mqJms baseQueueName="QUEUEIN"/>
</jmsQueue>
queueConnectionFactory通过代码中的JNDI检索。
任何帮助将不胜感激。
解决方案最终是在收到MQ消息后不执行提交/回滚,有关更多信息,请参见此处:Websphere Liberty : JMS Sessions don't work。