Example usage for java.sql DriverManager deregisterDriver

List of usage examples for java.sql DriverManager deregisterDriver

Introduction

In this page you can find the example usage for java.sql DriverManager deregisterDriver.

Prototype

@CallerSensitive
public static void deregisterDriver(Driver driver) throws SQLException 

Source Link

Document

Removes the specified driver from the DriverManager 's list of registered drivers.

Usage

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