use of javax.sql.ConnectionEvent in project druid by alibaba.
the class DruidPooledConnection method close.
@Override
public void close() throws SQLException {
if (this.disable) {
return;
}
DruidConnectionHolder holder = this.holder;
if (holder == null) {
if (dupCloseLogEnable) {
LOG.error("dup close");
}
return;
}
DruidAbstractDataSource dataSource = holder.getDataSource();
boolean isSameThread = this.getOwnerThread() == Thread.currentThread();
if (!isSameThread) {
dataSource.setAsyncCloseConnectionEnable(true);
}
if (dataSource.isAsyncCloseConnectionEnable()) {
syncClose();
return;
}
for (ConnectionEventListener listener : holder.getConnectionEventListeners()) {
listener.connectionClosed(new ConnectionEvent(this));
}
List<Filter> filters = dataSource.getProxyFilters();
if (filters.size() > 0) {
FilterChainImpl filterChain = new FilterChainImpl(dataSource);
filterChain.dataSource_recycle(this);
} else {
recycle();
}
this.disable = true;
}
use of javax.sql.ConnectionEvent in project druid by alibaba.
the class DruidDataSourceTest_getPooledConnection method test_event_error.
public void test_event_error() throws Exception {
DruidPooledConnection conn = (DruidPooledConnection) dataSource.getPooledConnection();
final AtomicInteger errorCount = new AtomicInteger();
conn.addConnectionEventListener(new ConnectionEventListener() {
@Override
public void connectionErrorOccurred(ConnectionEvent event) {
errorCount.incrementAndGet();
}
@Override
public void connectionClosed(ConnectionEvent event) {
}
});
PreparedStatement stmt = conn.prepareStatement("select ?");
try {
stmt.executeQuery();
} catch (SQLException e) {
}
Assert.assertEquals(1, errorCount.get());
conn.close();
}
use of javax.sql.ConnectionEvent in project druid by alibaba.
the class ConnectionTest5 method test_handleException_5.
public void test_handleException_5() throws Exception {
DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class);
conn.addConnectionEventListener(new ConnectionEventListener() {
@Override
public void connectionClosed(ConnectionEvent event) {
}
@Override
public void connectionErrorOccurred(ConnectionEvent event) {
}
});
conn.close();
{
SQLException error = null;
try {
conn.handleException(new RuntimeException());
} catch (SQLException ex) {
error = ex;
}
Assert.assertNotNull(error);
}
}
use of javax.sql.ConnectionEvent in project robovm by robovm.
the class OldConnectionEventTest method testGetSQLException.
public void testGetSQLException() {
Impl_PooledConnection ipc = new Impl_PooledConnection();
ConnectionEvent ce = new ConnectionEvent(ipc);
ConnectionEvent ce2 = new ConnectionEvent(ipc, null);
assertNull(ce.getSQLException());
assertEquals(ce2.getSQLException(), ce.getSQLException());
SQLException e = new SQLException();
ConnectionEvent ce3 = new ConnectionEvent(ipc, e);
assertNotNull(ce3.getSQLException());
assertNotSame(ce3.getSQLException(), ce2.getSQLException());
}
use of javax.sql.ConnectionEvent in project robovm by robovm.
the class OldConnectionEventTest method testConstructorConnection.
public void testConstructorConnection() {
Impl_PooledConnection ipc = new Impl_PooledConnection();
ConnectionEvent ce = new ConnectionEvent(ipc);
ConnectionEvent ce2 = new ConnectionEvent(ipc, null);
assertSame(ce2.getSource(), ce.getSource());
}
Aggregations