It finally dawned on my that my connection to ActiveMQ using: vm://localhost?asyncSend=true
Was a bad idea. So I tired using these: * vm://localhost * tcp://localhost:61616 Both of which don't hang... but now were back to more Oracle exceptions: <snip> 18:24:47,683 WARN [JDBCExceptionReporter] SQL Error: 1591, SQLState: 72000 18:24:47,683 ERROR [JDBCExceptionReporter] ORA-01591: lock held by in-doubt distributed transaction 6.28.6034 18:24:47,684 WARN [JDBCExceptionReporter] SQL Error: 1591, SQLState: 72000 18:24:47,684 ERROR [JDBCExceptionReporter] ORA-01591: lock held by in-doubt distributed transaction 6.28.6034 18:24:47,686 WARN [JDBCExceptionReporter] SQL Error: 1591, SQLState: 72000 18:24:47,686 ERROR [JDBCExceptionReporter] ORA-01591: lock held by in-doubt distributed transaction 6.28.6034 18:24:47,686 WARN [JDBCExceptionReporter] SQL Error: 1591, SQLState: 72000 18:24:47,686 ERROR [JDBCExceptionReporter] ORA-01591: lock held by in-doubt distributed transaction 6.28.6034 18:24:47,687 ERROR [JDBCExceptionReporter] Could not execute JDBC batch update java.sql.BatchUpdateException: ORA-01591: lock held by in-doubt distributed transaction 6.28.6034 at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:498) at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:12368) at org.tranql.connector.jdbc.StatementHandle.executeBatch(StatementHandle.java:157) at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:54) at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:126) at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2421) at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2371) at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2240) at org.springframework.orm.hibernate.HibernateTemplate$22.doInHibernate(HibernateTemplate.java:595) at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:312) at org.springframework.orm.hibernate.HibernateTemplate.flush(HibernateTemplate.java:593) at com.solidusnetworks.paycore.util.hibernate.BaseDAOHibernate.save(BaseDAOHibernate.java:176) at com.solidusnetworks.ach.oltp.dao.impl.ECheckDAOHibernate.saveECheck(ECheckDAOHibernate.java:208) at com.solidusnetworks.paycore.ach.model.check.service.CheckUpdateServiceBean.addECheck(CheckUpdateServiceBean.java:117) at com.solidusnetworks.paycore.ach.model.check.service.CheckUpdateServiceBean$$FastClassByCGLIB$$70674c74.invoke(<generated>) at org.openejb.dispatch.AbstractMethodOperation.invoke(AbstractMethodOperation.java:90) at org.openejb.slsb.BusinessMethod.execute(BusinessMethod.java:67) at org.openejb.dispatch.DispatchInterceptor.invoke(DispatchInterceptor.java:72) at org.apache.geronimo.naming.java.ComponentContextInterceptor.invoke(ComponentContextInterceptor.java:56) at org.openejb.ConnectionTrackingInterceptor.invoke(ConnectionTrackingInterceptor.java:81) at org.openejb.transaction.ContainerPolicy$TxRequired.invoke(ContainerPolicy.java:119) at org.openejb.transaction.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:80) at org.openejb.slsb.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:98) at org.openejb.transaction.ContainerPolicy$TxRequired.invoke(ContainerPolicy.java:119) at org.openejb.transaction.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:80) at org.openejb.SystemExceptionInterceptor.invoke(SystemExceptionInterceptor.java:82) at org.openejb.GenericEJBContainer.invoke(GenericEJBContainer.java:238) at org.openejb.proxy.EJBMethodInterceptor.intercept(EJBMethodInterceptor.java:129) at org.openejb.proxy.SessionEJBLocalObject$$EnhancerByCGLIB$$d7dd99ce.addECheck(<generated>) at com.solidusnetworks.paycore.ach.business.pos.POSCheckServiceBean.authorize(POSCheckServiceBean.java:234) at com.solidusnetworks.paycore.ach.business.pos.POSCheckServiceBean$$FastClassByCGLIB$$ac29a8c5.invoke(<generated>) at org.openejb.dispatch.AbstractMethodOperation.invoke(AbstractMethodOperation.java:90) at org.openejb.slsb.BusinessMethod.execute(BusinessMethod.java:67) at org.openejb.dispatch.DispatchInterceptor.invoke(DispatchInterceptor.java:72) at org.apache.geronimo.naming.java.ComponentContextInterceptor.invoke(ComponentContextInterceptor.java:56) at org.openejb.ConnectionTrackingInterceptor.invoke(ConnectionTrackingInterceptor.java:81) at org.openejb.transaction.ContainerPolicy$TxRequired.invoke(ContainerPolicy.java:119) at org.openejb.transaction.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:80) at org.openejb.slsb.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:98) at org.openejb.transaction.ContainerPolicy$TxRequired.invoke(ContainerPolicy.java:140) at org.openejb.transaction.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:80) at org.openejb.SystemExceptionInterceptor.invoke(SystemExceptionInterceptor.java:82) at org.openejb.GenericEJBContainer.invoke(GenericEJBContainer.java:238) at org.openejb.server.ejbd.EjbRequestHandler.invoke(EjbRequestHandler.java:297) at org.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:325) at org.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:196) at org.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:150) at org.openejb.server.ejbd.EjbServer.service(EjbServer.java:87) at org.openejb.server.ejbd.EjbServer$$FastClassByCGLIB$$d379d2ff.invoke(<generated>) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118) at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:800) at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57) at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:36) at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96) at org.activeio.xnet.ServerService$$EnhancerByCGLIB$$944b9c52.service(<generated>) at org.activeio.xnet.ServicePool$2.run(ServicePool.java:67) at org.activeio.xnet.ServicePool$3.run(ServicePool.java:90) at org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:138) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:552) </snip> And my now good friend ora-code.com says that it means: <snip> ORA-01591: lock held by in-doubt distributed transaction string Cause: An attempt was made to access resource that is locked by a dead two-phase commit transaction that is in prepared state. Action: The database administrator should query the PENDING_TRANS$ and related tables, and attempt to repair network connection(s) to coordinator and commit point. If timely repair is not possible, the database administrator should contact the database administrator at the commit point if known or the end user for correct outcome, or use heuristic default if given to issue a heuristic COMMIT or ABORT command to finalize the local portion of the distributed transaction. </snip> So, I think I've gotten further, but now I have no idea what to try. :-( --jason