Unfortunately, it seems that a basic JDBC connection pool needs to
pool Connection objects, while a transactional JDBC connection pool needs
to pool XAConnection objects. And the only thing a Connection has in
common with an XAConnection is java.lang.Object. Sigh.
So it seems like the best way to approach this may be to create a
generic *Object* pool, and then use the same basic pooling implementation
in both cases, with small helpers to take the appropriate action when
something is released from the pool (i.e. register with the
TransactionManager). This would also entail a more generic interface for
"last used" updates and probably a pooled object listener similar to
ConnectionEventListener...
Aaron