Example usage for org.apache.commons.pool2 PooledObject getObject

List of usage examples for org.apache.commons.pool2 PooledObject getObject

Introduction

In this page you can find the example usage for org.apache.commons.pool2 PooledObject getObject.

Prototype

T getObject();

Source Link

Document

Obtain the underlying object that is wrapped by this instance of PooledObject .

Usage

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();
}