In the ConnectionManager (under 3.0.4), we have been
doing some integration with Toplink and I think that I
have found a bug in the JBoss code. The problem we are
seeing is that managed connections are not be released
when they should be.
In LocalTxConnectionManager.java, there is some code in
connectionClosed() method that looks like:
log.info("called unregisterAssociation, delisting");
//no more handles
log.info("called unregisterAssociation, returning");
The problem is that if there is an exception in the
delist() function call, the managed connection is never
released. This happens silently as the code only
catches ResourceExceptions, but some parent is catching
the exception that we are getting. By placing a
catch-all try clause around the delist(), I see that we
java.lang.IllegalStateException: Already committed.
in some cases. We have fixed the problem for us by
simply reordering the statements so that the delist()
happens after the call to "returnManagedConnection()",
but a better solution might be to use a better
Looks like this code has been rewritten in the 4.0RC's,
but it would be nice to fix this for the 3.x branch.