public synchronized void shutdownDbmsPools ( ) { //force shutdown //runnable datasourceCleaner . shutdown ( ) ; datasourceCleaner = null ; //shell for the runnable cleanerThread . interrupt ( ) ; //stop the thread cleanerThread = null ; if ( dbmsPoolTable == null ) { return ; } Enumeration < String > allDbmsKeys = dbmsPoolTable . keys ( ) ; while ( allDbmsKeys . hasMoreElements ( ) ) { String dbmsKey = allDbmsKeys . nextElement ( ) ; PooledDataSourceProvider provider = this . getProvider ( dbmsKey ) ; Hashtable < String , DataSource > dsTable = dbmsPoolTable . get ( dbmsKey ) ; for ( DataSource ds : dsTable . values ( ) ) { try { provider . closePooledDataSource ( ds ) ; } catch ( SQLException e ) { // todo logger.error("Failed to close datasource in dbms poolKey = " // + dbmsKey); } } dsTable . clear ( ) ; } dbmsPoolTable . clear ( ) ; dbmsPoolTable = null ; }
force shutdown everything