2017-02-05 11 views
2

Я новичок в верблюде, и я пытаюсь написать приложение, которое объединяет Websphere MQ и Active MQ на JBoss EAP 7. Приложение развертывает успешно работает, я может отбрасывать сообщения в очереди Websphere, и он получает поддержку Active MQ. Однако я вижу сообщения об ошибках в журнале, показывающие, что он пытается использовать соединение после его открытия.Camel Приложение попыталось использовать сеанс JMS после закрытия сеанса

15:48:57,814 ERROR [org.jboss.jca.core.connectionmanager.listener.TxConnectionListener] (Camel (camel) thread #1 - JmsConsumer[I0_TEST]) IJ000315: Pool IbmMQQueueFactory has 1 active handles 
15:48:57,819 INFO [org.jboss.as.connector.deployers.RaXmlDeployer] (Camel (camel) thread #1 - JmsConsumer[I0_TEST]) wmq.jmsra.rar: MQJCA4016:Unregistered connection handle being closed: '[email protected]'. 
15:49:02,819 WARN [org.apache.camel.component.jms.DefaultJmsMessageListenerContainer] (Camel (camel) thread #1 - JmsConsumer[I0_TEST]) Setup of JMS message listener invoker failed for destination 'I0_TEST' - trying to recover. Cause: Local JMS transaction failed to commit; nested exception is com.ibm.msg.client.jms.DetailedIllegalStateException: MQJCA1020: The session is closed. 
The application attempted to use a JMS session after it had closed the session. 
Modify the application so that it closes the JMS session only after it has finished using the session. 

Вот мой applicationContext.xml

<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:/ConnectionFactory" /> 
    <property name="lookupOnStartup" value="false" /> 
    <property name="cache" value="true" /> 
    <property name="proxyInterface" value="javax.jms.ConnectionFactory" /> 
</bean> 

<bean id="jmsTransactionManager" 
    class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManagerName" value="java:/TransactionManager" /> 
</bean> 

<bean id="jms" class="org.apache.camel.component.jms.JmsComponent"> 
    <property name="connectionFactory" ref="jmsConnectionFactory" /> 
    <property name="transacted" value="true" /> 
    <property name="transactionManager" ref="jmsTransactionManager" /> 
</bean> 

<bean id="wmqConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:/jms/IbmMQMsgQCF" /> 
    <property name="lookupOnStartup" value="false" /> 
    <property name="cache" value="true" /> 
    <property name="proxyInterface" value="javax.jms.ConnectionFactory" /> 
</bean> 

<bean id="wmqTransactionManager" 
    class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManagerName" value="java:/TransactionManager" /> 
</bean> 

<bean id="wmq" class="org.apache.camel.component.jms.JmsComponent"> 
    <property name="connectionFactory" ref="wmqConnectionFactory" /> 
    <property name="transacted" value="true" /> 
    <property name="transactionManager" ref="wmqTransactionManager" /> 
</bean> 


<bean id="routerlogger" class="org.jboss.as.quickstarts.mdb.RoutLogger" /> 

<camelContext trace="true" id="camel" 
    xmlns="http://camel.apache.org/schema/spring"> 

    <route> 
     <from uri="wmq:websphereQueue"/> 
     <setExchangePattern pattern="InOnly"/> 
     <to uri="jms:activeQueue" pattern="InOnly" /> 
    </route> 
</camelContext> 

Его простое приложение, пытаясь определить, что я пропускаю.

ответ

1

Я нашел эту ошибку JBossDeveloper «JBEAP-2344: UserTransaction commit(), rollback() closes connection in Websphere MQ 7.5», которая выглядит так, как она описывает вашу проблему, и имеет комментарии, указывающие на обновление документации «JBEAP-3535: Documentation: Add note about connection close on commit() and rollback() to Deploy the WebSphere MQ Resource Adapter subchapter».

Не мог бы вы добавить примечание, что установка tracking="false", решает проблему с WebSphere MQ 7.5 и 8, где метод фиксацией() или откатом() на UserTransaction закрывает все JMS соединений, которые были часть этой сделки , Эта часть связана с документированием известного ограничений для WebSphere MQ в JBEAP-3142.

+0

Спасибо, что сделал трюк. Mike –

+0

Я пытаюсь связать это с настройкой MQ в IBM Liberty, где я получаю ту же ошибку. Есть ли страница с описанием «tracking = false»? –

+0

https://stackoverflow.com/questions/48363362/camel-transacted-mq-session-closed-on-every-commit –