List of usage examples for org.apache.commons.pool2 PooledObject getObject
T getObject();
From source file:org.jmxtrans.embedded.util.pool.SocketOutputStreamPoolFactory.java
@Override public void destroyObject(HostAndPort hostAndPort, PooledObject<SocketOutputStream> socketOutputStreamRef) throws Exception { SocketOutputStream socketOutputStream = socketOutputStreamRef.getObject(); socketOutputStream.close();//from w ww . j a va 2 s . c om socketOutputStream.getSocket().close(); }
From source file:org.jmxtrans.embedded.util.pool.SocketOutputStreamPoolFactory.java
/** * Defensive approach: we test all the "<code>Socket.isXXX()</code>" flags. *///from ww w . j a v a2 s. com @Override public boolean validateObject(HostAndPort hostAndPort, PooledObject<SocketOutputStream> socketOutputStreamRef) { Socket socket = socketOutputStreamRef.getObject().getSocket(); return socket.isConnected() && socket.isBound() && !socket.isClosed() && !socket.isInputShutdown() && !socket.isOutputShutdown(); }
From source file:org.jmxtrans.embedded.util.pool.SocketWriterPoolFactory.java
@Override public void destroyObject(HostAndPort hostAndPort, PooledObject<SocketWriter> socketWriterRef) throws Exception { super.destroyObject(hostAndPort, socketWriterRef); SocketWriter socketWriter = socketWriterRef.getObject(); socketWriter.close();// w w w . j ava2s .c om socketWriter.getSocket().close(); }
From source file:org.jmxtrans.embedded.util.pool.SocketWriterPoolFactory.java
/** * Defensive approach: we test all the "<code>Socket.isXXX()</code>" flags. *//*from w w w .ja v a2 s. c o m*/ @Override public boolean validateObject(HostAndPort hostAndPort, PooledObject<SocketWriter> socketWriterRef) { Socket socket = socketWriterRef.getObject().getSocket(); return socket.isConnected() && socket.isBound() && !socket.isClosed() && !socket.isInputShutdown() && !socket.isOutputShutdown(); }
From source file:org.openhab.binding.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.java
@Override public void destroyObject(ModbusSlaveEndpoint endpoint, final PooledObject<ModbusSlaveConnection> obj) { logger.trace("destroyObject for connection {} and endpoint {} -> closing the connection", obj.getObject(), endpoint);/* w ww . j av a 2s . co m*/ obj.getObject().resetConnection(); }
From source file:org.openhab.binding.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.java
@Override public void activateObject(ModbusSlaveEndpoint endpoint, PooledObject<ModbusSlaveConnection> obj) throws Exception { if (obj.getObject() == null) { return;//from w w w .j av a 2 s. c om } try { ModbusSlaveConnection connection = obj.getObject(); EndpointPoolConfiguration config = endpointPoolConfigs.get(endpoint); if (connection.isConnected()) { if (config != null) { long waited = waitAtleast(lastPassivateMillis.get(endpoint), config.getPassivateBorrowMinMillis()); logger.trace( "Waited {}ms (passivateBorrowMinMillis {}ms) before giving returning connection {} for endpoint {}, to ensure delay between transactions.", waited, config.getPassivateBorrowMinMillis(), obj.getObject(), endpoint); } } else { // invariant: !connection.isConnected() tryConnect(endpoint, obj, connection, config); } } catch (Exception e) { logger.error("Error connecting connection {} for endpoint {}: {}", obj.getObject(), endpoint, e.getMessage()); } }
From source file:org.openhab.binding.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.java
@Override public void passivateObject(ModbusSlaveEndpoint endpoint, PooledObject<ModbusSlaveConnection> obj) { ModbusSlaveConnection connection = obj.getObject(); if (connection == null) { return;//from ww w . java 2 s .co m } logger.trace("Passivating connection {} for endpoint {}...", connection, endpoint); lastPassivateMillis.put(endpoint, System.currentTimeMillis()); EndpointPoolConfiguration configuration = endpointPoolConfigs.get(endpoint); long reconnectAfterMillis = configuration == null ? 0 : configuration.getReconnectAfterMillis(); long connectionAgeMillis = System.currentTimeMillis() - ((PooledConnection) obj).getLastConnected(); if (reconnectAfterMillis == 0 || (reconnectAfterMillis > 0 && connectionAgeMillis > reconnectAfterMillis)) { logger.trace( "(passivate) Connection {} (endpoint {}) age {}ms is over the reconnectAfterMillis={}ms limit -> disconnecting.", connection, endpoint, connectionAgeMillis, reconnectAfterMillis); connection.resetConnection(); } else { logger.trace( "(passivate) Connection {} (endpoint {}) age ({}ms) is below the reconnectAfterMillis ({}ms) limit. Keep the connection open.", connection, endpoint, connectionAgeMillis, reconnectAfterMillis); } logger.trace("...Passivated connection {} for endpoint {}", obj.getObject(), endpoint); }
From source file:org.openhab.binding.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.java
@Override public boolean validateObject(ModbusSlaveEndpoint key, PooledObject<ModbusSlaveConnection> p) { boolean valid = p.getObject() != null && p.getObject().isConnected(); logger.trace("Validating endpoint {} connection {} -> {}", key, p.getObject(), valid); return valid; }
From source file:org.openhab.binding.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.java
private void tryConnect(ModbusSlaveEndpoint endpoint, PooledObject<ModbusSlaveConnection> obj, ModbusSlaveConnection connection, EndpointPoolConfiguration config) throws Exception { if (connection.isConnected()) { return;/*from ww w. j a va 2 s .c o m*/ } int tryIndex = 0; Long lastConnect = lastConnectMillis.get(endpoint); int maxTries = config == null ? 1 : config.getConnectMaxTries(); do { try { if (config != null) { long waited = waitAtleast(lastConnect, Math.max(config.getInterConnectDelayMillis(), config.getPassivateBorrowMinMillis())); if (waited > 0) { logger.trace( "Waited {}ms (interConnectDelayMillis {}ms, passivateBorrowMinMillis {}ms) before " + "connecting disconnected connection {} for endpoint {}, to allow delay " + "between connections re-connects", waited, config.getInterConnectDelayMillis(), config.getPassivateBorrowMinMillis(), obj.getObject(), endpoint); } } connection.connect(); long curTime = System.currentTimeMillis(); ((PooledConnection) obj).setLastConnected(curTime); lastConnectMillis.put(endpoint, curTime); break; } catch (Exception e) { tryIndex++; logger.error("connect try {}/{} error: {}. Connection {}. Endpoint {}", tryIndex, maxTries, e.getMessage(), connection, endpoint); if (tryIndex >= maxTries) { logger.error( "re-connect reached max tries {}, throwing last error: {}. Connection {}. Endpoint {}", maxTries, e.getMessage(), connection, endpoint); throw e; } lastConnect = System.currentTimeMillis(); } } while (true); }
From source file:org.openhab.io.transport.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl.java
@Override public void destroyObject(ModbusSlaveEndpoint endpoint, @Nullable PooledObject<ModbusSlaveConnection> obj) { if (obj == null) { return;/*w w w .j a va2 s . c o m*/ } logger.trace("destroyObject for connection {} and endpoint {} -> closing the connection", obj.getObject(), endpoint); if (obj.getObject() == null) { return; } obj.getObject().resetConnection(); }