public void printStackTrace() { if (traceCaller.value() && lastStackTracePrint + traceWait.interval() < System.currentTimeMillis()) { lastStackTracePrint = System.currentTimeMillis(); LinkedList<ConnectionTrace> list = new LinkedList<ConnectionTrace>(getStackTraces().values()); Collections.sort(list); log().f("Connection Usage",list.size()); for (ConnectionTrace trace :list) { trace.log(log()); } } }
/** {@inheritDoc} */ @Override @JmxManaged(descrition="Return the usage of the connections") public String dumpUsage(boolean used) { StringBuilder out = new StringBuilder(); synchronized (pool) { for (ConnectionTrace trace : getStackTraces().values()) { out.append(trace.toString()).append("\n"); } } return out.toString(); }
public DbConnectionProxy(DbPool pool, DbConnection instance) { if (traceCaller.value()) { this.pool = pool; pool.getStackTraces().put(MSystem.getObjectId(this), new ConnectionTrace(this)); // instance.setUsedTrace(createStackTrace); } this.instance = instance; log().t(id,"created",instance.getInstanceId()); }
@Override protected void finalize() throws Throwable { log().t(id,"finalized",instance.getInstanceId()); if (instance != null) { log().i(id,"final closed", instance.getInstanceId() ); ConnectionTrace trace = pool.getStackTraces().get(MSystem.getObjectId(this)); if (trace != null) trace.log(log()); setUsed(false); } if (traceCaller.value()) pool.getStackTraces().remove(MSystem.getObjectId(this)); super.finalize(); }