@Override public void stop(StopContext context) { try { IdleRemover.getInstance().stop(); } catch (Throwable t) { // Ignore } } }
@Override public IdleRemover getValue() throws IllegalStateException { return IdleRemover.getInstance(); }
@Override public void start(StartContext context) throws StartException { try { IdleRemover.getInstance().start(); } catch (Throwable t) { throw new StartException(t); } }
/** * {@inheritDoc} */ public void shutdown() { if (log.isTraceEnabled()) log.tracef("Shutdown - Pool: %s MCP: %s", pool.getName(), Integer.toHexString(System.identityHashCode(this))); IdleRemover.getInstance().unregisterPool(this); ConnectionValidator.getInstance().unregisterPool(this); if (checkedOutSize.get() > 0) { for (Entry<ConnectionListener, ConnectionListenerWrapper> entry : cls.entrySet()) { if (entry.getValue().isCheckedOut()) log.destroyingActiveConnection(pool.getName(), entry.getKey().getManagedConnection()); if (Tracer.isEnabled()) Tracer.clearConnectionListener(pool.getName(), this, entry.getKey()); } } final Collection<ConnectionListener> toDestroy = new ArrayList<ConnectionListener>(); flush(FlushMode.ALL, toDestroy); for (ConnectionListener cl : toDestroy) { cl.destroy(); } }
IdleRemover.getInstance().registerPool(this, poolConfiguration.getIdleTimeoutMinutes() * 1000L * 60);
final ClassLoader oldTccl = SecurityActions.getThreadContextClassLoader(); SecurityActions.setThreadContextClassLoader(IdleRemover.class.getClassLoader()); mcp.removeIdleConnections(); SecurityActions.setThreadContextClassLoader(oldTccl);
/** * Start * @exception Throwable Thrown if an error occurs */ public void start() throws Throwable { if (!isExternal) { this.executorService = Executors.newSingleThreadExecutor(new IdleRemoverThreadFactory()); } this.shutdown.set(false); this.interval = Long.MAX_VALUE; this.next = Long.MAX_VALUE; this.executorService.execute(new IdleRemoverRunner()); }
/** * Unregister pool instance for connection validation. * @param mcp pool instance */ public void unregisterPool(IdleConnectionRemovalSupport mcp) { logger.debugf("Unregister pool: %s", mcp); instance.internalUnregisterPool(mcp); }
/** * Register pool for connection validation. * @param mcp managed connection pool * @param interval validation interval */ public void registerPool(IdleConnectionRemovalSupport mcp, long interval) { logger.debugf("Register pool: %s (interval=%s)", mcp, interval); instance.internalRegisterPool(mcp, interval); }
@Override public void stop(StopContext context) { try { IdleRemover.getInstance().stop(); } catch (Throwable t) { // Ignore } } }
@Override public void start(StartContext context) throws StartException { try { IdleRemover.getInstance().start(); } catch (Throwable t) { throw new StartException(t); } }
/** * {@inheritDoc} */ public void shutdown() { final Collection<ConnectionListener> toDestroy; synchronized (this) { if (log.isTraceEnabled()) log.tracef("Shutdown - Pool: %s MCP: %s", pool.getName(), Integer.toHexString(System.identityHashCode( this))); IdleRemover.getInstance().unregisterPool(this); ConnectionValidator.getInstance().unregisterPool(this); if (checkedOut.size() > 0) { for (ConnectionListener cl : checkedOut) { log.destroyingActiveConnection(pool.getName(), cl.getManagedConnection()); if (Tracer.isEnabled()) Tracer.clearConnectionListener(pool.getName(), this, cl); } } toDestroy = new ArrayList<ConnectionListener>(); flush(FlushMode.ALL, toDestroy); } for (ConnectionListener cl : toDestroy) { cl.destroy(); } }
IdleRemover.getInstance().registerPool(this, poolConfiguration.getIdleTimeoutMinutes() * 1000L * 60);
@Override public IdleRemover getValue() throws IllegalStateException { return IdleRemover.getInstance(); }
@Override public void stop(StopContext context) { try { IdleRemover.getInstance().stop(); } catch (Throwable t) { // Ignore } } }
@Override public void start(StartContext context) throws StartException { try { IdleRemover.getInstance().start(); } catch (Throwable t) { throw new StartException(t); } }
@Override public IdleRemover getValue() throws IllegalStateException { return IdleRemover.getInstance(); }