2017-02-05 6 views
2

Ich bin neu zu Camel und ich versuche, eine App zu schreiben, die Websphere MQ und Active MQ auf JBoss EAP 7 überbrückt. Die App implementiert erfolgreich funktioniert, ich kann Nachrichten in der Websphere-Warteschlange ablegen und wird von Active MQ abgerufen. Jedoch sehe ich Fehlermeldungen im Protokoll, die zeigen, dass es versucht, eine Verbindung zu benutzen, nachdem sie geöffnet ist.Camel Die Anwendung versuchte, eine JMS-Sitzung zu verwenden, nachdem sie die Sitzung geschlossen hatte

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. 

Hier ist meine 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> 

Es ist eine einfache Anwendung, versuchen zu bestimmen, was mir fehlt.

Antwort

1

Ich habe diesen JBossDeveloper Bug "JBEAP-2344: UserTransaction commit(), rollback() closes connection in Websphere MQ 7.5" gefunden, der aussieht, als würde er Ihr Problem beschreiben und hat Kommentare, die auf Dokumentationsaktualisierung "JBEAP-3535: Documentation: Add note about connection close on commit() and rollback() to Deploy the WebSphere MQ Resource Adapter subchapter" zeigen.

Könnten Sie bitte eine Notiz, dass Einstellung tracking="false", löst Problem mit WebSphere MQ 7.5 und 8, wo das Verfahren commit() oder Rollback() auf Usertransaction keine JMS-Verbindungen schließt die Teil dieser Transaktion war hinzufügen . Dieser Teil bezieht sich auf die Dokumentation der bekannten Einschränkung von WebSphere MQ in JBEAP-3142.

+0

Danke, dass der Trick gemacht hat. Mike –

+0

Ich versuche, dies mit der Konfiguration von MQ in IBM Liberty zu verbinden, wo ich denselben Fehler erhalte. Gibt es eine Seite, die "tracking = false" beschreibt? –

+0

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

Verwandte Themen