List of usage examples for java.sql DriverManager deregisterDriver
@CallerSensitive public static void deregisterDriver(Driver driver) throws SQLException
From source file:net.sourceforge.vulcan.web.dbcp.UnregisteringBasicDataSource.java
@Override public synchronized void close() throws SQLException { super.close(); DriverManager.deregisterDriver(DriverManager.getDriver(getUrl())); }
From source file:com.ironiacorp.persistence.SqlUtil.java
/** * Unload the database driver (if it's loaded). *//*from w ww . j a v a2 s .co m*/ public static void unloadDriver(String driver) { if (!SqlUtil.isDriverLoaded(driver)) { return; } Enumeration<Driver> drivers = DriverManager.getDrivers(); while (drivers.hasMoreElements()) { Driver d = drivers.nextElement(); if (d.getClass().getName().equals(driver)) { try { DriverManager.deregisterDriver(d); } catch (SQLException e) { } } } }
From source file:org.jumpmind.db.util.BasicDataSourceFactory.java
public static void prepareDriver(String clazzName) throws Exception { Driver driver = (Driver) Class.forName(clazzName).newInstance(); synchronized (DriverManager.class) { Enumeration<Driver> drivers = DriverManager.getDrivers(); while (drivers.hasMoreElements()) { Driver driver2 = (Driver) drivers.nextElement(); /* /*from w w w . j a v a 2s . c o m*/ * MySQL and Maria DB drivers cannot co-exist because * they use the same JDBC URL. */ if ((driver.getClass().getName().equals("com.mysql.jdbc.Driver") && driver2.getClass().getName().equals("org.mariadb.jdbc.Driver")) || (driver.getClass().getName().equals("org.mariadb.jdbc.Driver") && driver2.getClass().getName().equals("com.mysql.jdbc.Driver"))) { DriverManager.deregisterDriver(driver2); } } } }
From source file:org.synchronoss.cloud.nio.multipart.example.utils.ContextFinalizer.java
@Override public void onApplicationEvent(ContextClosedEvent event) { if (log.isInfoEnabled()) log.info("onApplicationEvent: " + event); Enumeration<Driver> drivers = DriverManager.getDrivers(); Driver driver = null;/*from w w w .j a v a2 s . c o m*/ while (drivers.hasMoreElements()) { try { driver = drivers.nextElement(); DriverManager.deregisterDriver(driver); if (log.isWarnEnabled()) log.warn(String.format("Driver %s unregistered", driver)); } catch (SQLException e) { if (log.isWarnEnabled()) log.warn(String.format("Error unregistering driver %s", driver), e); } } Set<Thread> threadSet = Thread.getAllStackTraces().keySet(); Thread[] threadArray = threadSet.toArray(new Thread[threadSet.size()]); for (Thread thread : threadArray) { if (thread.getName().contains("Abandoned connection cleanup thread")) { synchronized (thread) { thread.stop(); //don't complain, it works } } } if (log.isInfoEnabled()) log.info("Finished processing onApplicationEvent"); }
From source file:com.wavemaker.runtime.server.CleanupListener.java
@Override public void contextDestroyed(ServletContextEvent event) { try {// ww w.j a va 2s. c o m // remove from the system DriverManager the JDBC drivers registered // by this web app for (Enumeration<Driver> e = CastUtils.cast(DriverManager.getDrivers()); e.hasMoreElements();) { Driver driver = e.nextElement(); if (driver.getClass().getClassLoader() == getClass().getClassLoader()) { DriverManager.deregisterDriver(driver); } } LogFactory.releaseAll(); // flush all of the Introspector's internal caches Introspector.flushCaches(); } catch (Exception e) { e.printStackTrace(); } }
From source file:net.longfalcon.web.listener.ContextListener.java
@Override public void contextDestroyed(ServletContextEvent servletContextEvent) { // Thanks StackOverflow // This manually deregisters JDBC driver, which prevents Tomcat 7 from complaining about memory leaks wrto this class Enumeration<Driver> drivers = DriverManager.getDrivers(); while (drivers.hasMoreElements()) { Driver driver = drivers.nextElement(); try {// w w w .j av a 2 s .c o m DriverManager.deregisterDriver(driver); _log.info(String.format("deregistering jdbc driver: %s", driver)); } catch (SQLException e) { _log.error(String.format("Error deregistering driver %s", driver), e); } } }
From source file:eionet.meta.ContainerContextClosedHandler.java
/** * Unregisters mysql connections.//from w w w .j ava 2 s.c om * * @param servletContextEvent * servlet context */ @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { Enumeration<Driver> drivers = DriverManager.getDrivers(); Driver driver = null; // clear drivers while (drivers.hasMoreElements()) { try { driver = drivers.nextElement(); DriverManager.deregisterDriver(driver); } catch (SQLException ex) { // deregistration failed LOGGER.warn(ex.getMessage()); } } // MySQL driver leaves around a thread. This static method cleans it up. try { // throw new InterruptedException(); AbandonedConnectionCleanupThread.shutdown(); } catch (InterruptedException ex) { // again failure LOGGER.warn(ex.getMessage()); } }
From source file:org.davidmendoza.fileUpload.utils.ContextFinalizer.java
@Override public void onApplicationEvent(ContextClosedEvent e) { log.info("Stopping connections"); Enumeration<Driver> drivers = DriverManager.getDrivers(); Driver d = null;//from w w w.ja va 2s . com while (drivers.hasMoreElements()) { try { d = drivers.nextElement(); DriverManager.deregisterDriver(d); log.warn(String.format("Driver %s deregistered", d)); } catch (SQLException ex) { log.warn(String.format("Error deregistering driver %s", d), ex); } } Set<Thread> threadSet = Thread.getAllStackTraces().keySet(); Thread[] threadArray = threadSet.toArray(new Thread[threadSet.size()]); for (Thread t : threadArray) { if (t.getName().contains("Abandoned connection cleanup thread")) { synchronized (t) { t.stop(); //don't complain, it works } } } log.info("Finished stopping connections"); }
From source file:net.ymate.platform.persistence.jdbc.AbstractDataSourceAdapter.java
public void destroy() { if (__inited) { __inited = false;/*from w w w. j a va 2 s .c o m*/ // try { DriverManager.deregisterDriver(DriverManager.getDriver(__cfgMeta.getConnectionUrl())); } catch (SQLException e) { _LOG.warn("", e); } // __cfgMeta = null; __dialect = null; } }
From source file:org.rhq.plugins.database.DatabasePluginLifecycleListener.java
public void shutdown() { // so we do not cause our classloader to leak perm gen, we need to de-register // any and all JDBC drivers this plugin registered Enumeration<Driver> drivers = DriverManager.getDrivers(); while (drivers.hasMoreElements()) { try {//ww w. j a v a 2 s .c o m Driver driver = drivers.nextElement(); DriverManager.deregisterDriver(driver); log.debug("Deregistered JDBC driver: " + driver.getClass()); } catch (Exception e) { log.warn("Failed to deregister JDBC drivers - memory might leak" + ThrowableUtil.getAllMessages(e)); } } log.debug(this.getClass().getSimpleName() + " completed shutdown."); return; }