in geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/ConnectionTrackingInterceptor.java [105:125]
public void exit(Collection<ConnectionInfo> connectionInfos)
throws ResourceException {
for (Iterator<ConnectionInfo> iterator = connectionInfos.iterator(); iterator.hasNext();) {
ConnectionInfo connectionInfo = iterator.next();
if (connectionInfo.isUnshareable()) {
//if one is, they all are
return;
}
ManagedConnectionInfo managedConnectionInfo = connectionInfo.getManagedConnectionInfo();
ManagedConnection managedConnection = managedConnectionInfo.getManagedConnection();
if (managedConnection instanceof DissociatableManagedConnection
&& managedConnectionInfo.isFirstConnectionInfo(connectionInfo)) {
iterator.remove();
((DissociatableManagedConnection) managedConnection).dissociateConnections();
managedConnectionInfo.clearConnectionHandles();
//todo this needs some kind of check so cx isn't returned more than once
//in case dissociate calls connection closed event and returns cx to pool.
returnConnection(connectionInfo, ConnectionReturnAction.RETURN_HANDLE);
}
}
}