geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Carman <>
Subject Enhydra enlist/delist/enlist woes...
Date Thu, 13 Sep 2012 11:41:45 GMT
I am trying to use enhydra's connection pool/XA support for our
project.  It's a ServiceMix-based project, so we're using Aries'
"wrapper" around Geronimo's transaction manager.  Anyway, what I'm
seeing is that their XA code seems to be trying to re-enlist the same
connection.  Unfortunately, they re-use the same XAResource instance,
so I run into this bit of code causing me an error:

if (xaRes == manager.getCommitter()) {
  throw new IllegalStateException("xaRes " + xaRes + " is a committer
but is not active or suspended");

Their connection code looks like this:

public class StandardXAConnection
	extends StandardPooledConnection
	implements XAConnection, XAResource, Referenceable, Runnable {


	 * We are required to maintain a 1-1 mapping between an XAConnection
	 * and its corresponding XAResource. We achieve this by implementing
	 * both interfaces in the same class.
	public XAResource getXAResource() {
		return this;

What I'm trying to understand is if they're attempting to do something
silly here or if I have something mis-configured.  We're using OpenJPA
and when it goes to close the connection (after it uses it for a
query), enhydra delists it from the current transaction.  Inside their
DataSource's "connectionClosed" method:

if ((tx != null) && (((StandardXAConnection)
xac).connectionHandle.isReallyUsed)) {
  try {
	tx.delistResource(xac.getXAResource(), XAResource.TMSUCCESS);
	// delist the xaResource
		"StandardXAPoolDataSource:connectionClosed the resourse is delisted");
        } catch (Exception e) {
		"StandardXAPoolDataSource:connectionClosed Exception in connectionClosed:"
		+ e);

Does this all make sense?  Is there something I need to configure to
allow re-enlistment of resources or are they just doing something
bone-headed here?

View raw message