Recovery Problem bei der Verwendung als JMS queue Persistenz

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.

\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/
imq.persist.jdbc.connection.validateOnGet=true
imq.persist.store=jdbc
imq.persist.jdbc.postgresql.password=
imq.persist.jdbc.postgresql.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:

[#|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.