Jms IBM Liberty:调用';提交';非事务会话上的方法

Jms IBM Liberty:调用';提交';非事务会话上的方法,jms,websphere,ibm-mq,websphere-liberty,mq,Jms,Websphere,Ibm Mq,Websphere Liberty,Mq,我正在将WAS6应用程序迁移到Liberty配置文件。 在我的项目中,我有一个不在全局事务下的部分,在那里我从一个队列中读取消息并将其放入另一个队列中 为此,我使用一个事务队列会话,在所有会话结束时,我执行提交方法调用,对于所有异常,我执行回滚 队列会话: QueueSession session = connection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE); 例外情况: com.ibm.msg.client.jms.Detai

我正在将WAS6应用程序迁移到Liberty配置文件。 在我的项目中,我有一个不在全局事务下的部分,在那里我从一个队列中读取消息并将其放入另一个队列中

为此,我使用一个事务队列会话,在所有会话结束时,我执行提交方法调用,对于所有异常,我执行回滚

队列会话:

QueueSession session = connection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
例外情况:

com.ibm.msg.client.jms.DetailedIllegelStateException:JMSCC0014:It is not valid to call the 'commit' method on a nontransacted session
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessoImpl.java)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java)
at com.ibm.msg.client.commonservices.j2se.NSLServices.createException(NSLServices.java)
at com.ibm.msg.client.commonservices.nls.NSLServices.createException(NSLServices.java)
at com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(JmsErrorUtils.java)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.commit(JmsSessionImpl.java)
at com.ibm.mq.jms.MQSession.commit(MQSession.java)
at com.ibm.mq.connector.outbound.SessionWrapper.commit(SessionWrapper.java)
at .....my package....JMSHelper.commit(JMSHelper.java)
at .......my code..........(myclass.java)
at ..............mycode............................
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor$ListenerWrapper.handleNotification(DefaultMBeanServerInterceptor.java)
at javax.management.NotificationBroadcasterSupport.handleNotification(NotificationBroadcasterSupport.java)
at javax.management.NotificationBroadcasterSupport$SendNotifJob.run(NotificationBroadcasterSupport.java)
at javax.management.NotificationBroadcasterSupport$1.execute(NotificationBroadcasterSupport.java)
at javax.management.NotificationBroadcasterSupport.sendNotification(NotificationBroadcasterSupport.java)
at javax.management.timer.Timer.sendNotification(Timer.java)
at javax.management.timer.TimernotifyAlarmClock(Timer.java)
at javax.management.timer.TimerAlarmClock.run(Timer.java)
at java.util.TimerThread.mainLoop(Timer.java)
at java.util.TimerThread.run(Timer.java)
JMSCC0014:It is not valid to call the 'rollback' method on a nontransacted session
QCF设置

<variable name="wmqJmsClient.rar.location" value="..\path\wmq.jmsra.rar">

<jmsQueueConnectionFactory id="qcfId" jndiName="jms/myQCF" >
  <properties.wmqJms channel="mychannel" hostName="myhost" port="1234" queueManager="myQManager" />
</jmsQueueConnectionFactory>


请告知。

您是否使用Liberty支持的MQ适配器?(例如,遵循像和这样的说明。)如果是这样,可能会发布你的server.xml。你能提供你正在使用的连接工厂的配置吗?@Alasdair:我已经用我正在使用的一个示例连接工厂修改了这个问题。你正在使用Liberty支持的MQ适配器吗?(例如,遵循像和这样的说明。)如果是这样,也许可以发布你的server.xml。你能提供你正在使用的连接工厂的配置吗?@Alasdair:我用我正在使用的连接工厂示例修改了这个问题。