Index: core/src/main/java/org/jboss/jca/core/api/connectionmanager/ccm/CachedConnectionManager.java =================================================================== --- core/src/main/java/org/jboss/jca/core/api/connectionmanager/ccm/CachedConnectionManager.java (revision 113965) +++ core/src/main/java/org/jboss/jca/core/api/connectionmanager/ccm/CachedConnectionManager.java (working copy) @@ -21,6 +21,8 @@ */ package org.jboss.jca.core.api.connectionmanager.ccm; +import java.util.Map; + import org.jboss.jca.core.api.connectionmanager.listener.ConnectionCacheListener; import org.jboss.jca.core.api.connectionmanager.listener.ConnectionListener; import org.jboss.jca.core.spi.connectionmanager.ComponentStack; @@ -80,4 +82,9 @@ * Stop */ public void stop(); + + public int getInUseConnections(); + + public Map listInUseConnections(); + } Index: core/src/main/java/org/jboss/jca/core/connectionmanager/ccm/CachedConnectionManagerImpl.java =================================================================== --- core/src/main/java/org/jboss/jca/core/connectionmanager/ccm/CachedConnectionManagerImpl.java (revision 113965) +++ core/src/main/java/org/jboss/jca/core/connectionmanager/ccm/CachedConnectionManagerImpl.java (working copy) @@ -30,8 +30,11 @@ import org.jboss.jca.core.spi.transaction.TxUtils; import org.jboss.jca.core.spi.transaction.usertx.UserTransactionRegistry; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; import java.lang.reflect.Method; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; @@ -619,4 +622,30 @@ return sb.toString(); } + + public int getInUseConnections() + { + synchronized (connectionStackTraces) + { + return connectionStackTraces.size(); + } + } + + public Map listInUseConnections() + { + synchronized (connectionStackTraces) + { + HashMap result = new HashMap(); + for (Iterator i = connectionStackTraces.entrySet().iterator(); i.hasNext();) + { + Map.Entry entry = (Map.Entry) i.next(); + Throwable stackTrace = (Throwable) entry.getValue(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + PrintStream ps = new PrintStream(baos); + stackTrace.printStackTrace(ps); + result.put(entry.getKey().toString(), baos.toString()); + } + return result; + } + } }