Package com.sparc.knappsack.components.server

Source Code of com.sparc.knappsack.components.server.WebAppContextListener

package com.sparc.knappsack.components.server;


import ch.qos.logback.classic.LoggerContext;
import com.hazelcast.core.Hazelcast;
import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;

/**
* This class manages startup and shutdown procedures.
*/
@Component
public class WebAppContextListener implements ServletContextListener {
    private static final Logger log = LoggerFactory.getLogger(WebAppContextListener.class);

    public void contextInitialized(ServletContextEvent arg0) {
    }

    public final void contextDestroyed(ServletContextEvent arg0) {
        try {
            log.info("Shutting down web app");
            Thread.sleep(1000);
            log.info("Shutting down the dbWebServer");
            DBWebServer.stopServer();

            shutDownLogger();

            Thread.sleep(1000);
            deregisterDrivers();

            log.info("Shutting down Hazelcast");
            Hazelcast.shutdownAll();
        } catch (InterruptedException e) {
            log.error("InterruptedException while de-registering drivers.", e);
        }
    }

    private void shutDownLogger() {
        ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();
        if (loggerFactory instanceof LoggerContext) {
            log.info("Shutting down LoggerContext");
            LoggerContext context = (LoggerContext) loggerFactory;
            context.stop();
        }
    }

    private void deregisterDrivers() {
        Enumeration<Driver> drivers = DriverManager.getDrivers();
        while (drivers.hasMoreElements()) {
            Driver driver = drivers.nextElement();
            try {
                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);
            }
        }
    }
}
TOP

Related Classes of com.sparc.knappsack.components.server.WebAppContextListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.