Recovery Problem bei der Verwendung als JMS queue Persistenz

Alle Fragen und Probleme zu den externen Schnittstellen wie ODBC, JDBC, ...

Recovery Problem bei der Verwendung als JMS queue Persistenz

Beitragvon ronny.weiser » Fr 28. Okt 2011, 10:55

Hallo,

wir verwenden Version 8.4.4 (jdbc3 Treiber 703) zusammen mit Glassfish 2.1.1 sowohl für die Persistierung der Businessdaten als auch der JMS-Queue. In unseren Recovery Tests (unter WinXP z. B. den Service während des laufenden Server-Betriebs neu starten) kann problemlos wieder eine Verbindung zur Speicherung der Daten aufgebaut werden aber zur Speicherung der Messages geschieht das nicht. Die Transaktion umfasst sowhl das Persistieren der Businessdaten als auch das der Messages. Das Problem tritt auch mit 9.0 (jdbc3 Treiber 801) auf.

<domain>\imq\instances\imqbroker\props\config.properties enthält die folgenden Werte:
imq.persist.jdbc.postgresql.driver=org.postgresql.Driver
imq.instanceconfig.version=300
imq.persist.jdbc.connection.validationQuery=SELECT 1 FROM mqbkr41sbrokerid1
imq.persist.jdbc.dbVendor=postgresql
imq.brokerid=brokerid1
imq.persist.jdbc.postgresql.opendburl=jdbc\:postgresql\://localhost\:5432/<db>
imq.persist.jdbc.connection.validateOnGet=true
imq.persist.store=jdbc
imq.persist.jdbc.postgresql.password=<pwd>
imq.persist.jdbc.postgresql.user=<user>

Durch validateOnGet=true in Kombination mit der validationQuery sollte der Broker dann eigentlich feststellen können, dass er eine neue Verbinung braucht. Allerdings erhalte ich folgende Exception:

Code: Alles auswählen

[#|2011-10-28T09:13:33.343+0200|SEVERE|sun-appserver2.1|javax.resourceadapter.mqjmsra.outbound.connection|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-3;_RequestID=2311c73a-5126-4a4a-b006-090dcf10ad14;|startTransaction (XA) on JMSService:jmsdirect failed for connectionId:5900897801960429568 due to Unknown JMSService server error ERROR: com.sun.messaging.jmq.jmsserver.util.BrokerException: [B4062]: Error storing information associated with Transaction 5900897802004893696 : data may be lost if the broker exits before the transaction completed|#]
[#|2011-10-28T09:13:33.343+0200|WARNING|sun-appserver2.1|javax.enterprise.system.core.transaction|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-3;_RequestID=2311c73a-5126-4a4a-b006-090dcf10ad14;|JTS5041: The resource manager is doing work outside a global transaction
javax.transaction.xa.XAException
 at com.sun.messaging.jms.ra.DirectXAResource.start(DirectXAResource.java:703)
 at com.sun.jts.jta.TransactionState.startAssociation(TransactionState.java:305)
 at com.sun.jts.jta.TransactionImpl.enlistResource(TransactionImpl.java:205)
 at com.sun.enterprise.distributedtx.J2EETransaction.enlistResource(J2EETransaction.java:607)
 at com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.enlistResource(J2EETransactionManagerImpl.java:372)
 at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.enlistResource(J2EETransactionManagerOpt.java:144)
 at com.sun.enterprise.resource.ResourceManagerImpl.registerResource(ResourceManagerImpl.java:144)
 at com.sun.enterprise.resource.ResourceManagerImpl.enlistResource(ResourceManagerImpl.java:102)
 at com.sun.enterprise.resource.PoolManagerImpl.getResource(PoolManagerImpl.java:216)
 at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:337)
 at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:235)
 at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165)
 at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:158)
 at com.sun.messaging.jms.ra.DirectConnectionFactory._allocateConnection(DirectConnectionFactory.java:569)
 at com.sun.messaging.jms.ra.DirectConnectionFactory.createConnection(DirectConnectionFactory.java:262)
 at com.sun.messaging.jms.ra.DirectConnectionFactory.createConnection(DirectConnectionFactory.java:241)

...


Caused by: com.sun.messaging.jmq.jmsservice.JMSServiceException: startTransaction: start transaction failed. Connection ID: 5900897801960429568, session ID: 0, XID: null
 at com.sun.messaging.jmq.jmsserver.service.imq.IMQDirectService.startTransaction(IMQDirectService.java:1534)
 at com.sun.messaging.jms.ra.DirectXAResource.start(DirectXAResource.java:669)
 ... 129 more
Caused by: com.sun.messaging.jmq.jmsserver.util.BrokerException: [B4062]: Error storing information associated with Transaction 5900897802004893696 : data may be lost if the broker exits before the transaction completed
 at com.sun.messaging.jmq.jmsserver.data.TransactionList.addTransactionID(TransactionList.java:442)
 at com.sun.messaging.jmq.jmsserver.data.TransactionList.addTransactionID(TransactionList.java:396)
 at com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler.doStart(TransactionHandler.java:2472)
 at com.sun.messaging.jmq.jmsserver.data.protocol.ProtocolImpl.startTransaction(ProtocolImpl.java:603)
 at com.sun.messaging.jmq.jmsserver.service.imq.IMQDirectService.startTransaction(IMQDirectService.java:1523)
 ... 130 more
Caused by: com.sun.messaging.jmq.jmsserver.util.BrokerException: [B4019]: Failed to persist transaction 5900897802004893696
 at com.sun.messaging.jmq.jmsserver.persist.jdbc.TransactionDAOImpl.insert(TransactionDAOImpl.java:418)
 at com.sun.messaging.jmq.jmsserver.persist.jdbc.TransactionDAOImpl.insert(TransactionDAOImpl.java:329)
 at com.sun.messaging.jmq.jmsserver.persist.jdbc.JDBCStore.storeTransaction(JDBCStore.java:1426)
 at com.sun.messaging.jmq.jmsserver.data.TransactionList.addTransactionID(TransactionList.java:439)
 ... 134 more
Caused by: java.sql.SQLException: [INSERT INTO MQTXN41Sbrokerid1 ( ID, TYPE, STATE, AUTO_ROLLBACK, XID, TXN_STATE, TXN_HOME_BROKER, TXN_BROKERS, STORE_SESSION_ID, EXPIRED_TS, ACCESSED_TS) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )]: Eingabe/Ausgabe-Fehler {0} beim Senden an das Backend.
 at com.sun.messaging.jmq.jmsserver.persist.jdbc.DBManager.wrapSQLException(DBManager.java:879)
 at com.sun.messaging.jmq.jmsserver.persist.jdbc.TransactionDAOImpl.insert(TransactionDAOImpl.java:413)
 ... 137 more


Hat jemand eine Info, ob das Problem jdbc-Treiber-seitig vorliegt oder ob es überhaupt bekannt ist und es evtl. einen Workaround gibt?

Vielen Dank.
ronny.weiser
Neuer Benutzer
 
Beiträge: 1
Registriert: Fr 28. Okt 2011, 10:01

Zurück zu externe Schnittstellen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste