org.springframework.service.ServiceShutdownThread.java Source code

Java tutorial

Introduction

Here is the source code for org.springframework.service.ServiceShutdownThread.java

Source

/*
 * The Spring Framework is published under the terms
 * of the Apache Software License.
 */
package org.springframework.service;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Registered callback with Runtime.addShutdownHook.  Calls destroy on
 * the ServiceManager.
 * @author <a href="mailto:mark.pollack@codestreet.com">Mark Pollack</a>
 */
public class ServiceShutdownThread extends Thread {

    /**
     * The log instance
     */
    private static Log LOG = LogFactory.getLog(ServiceShutdownThread.class);

    /**
     * The service manager instance.
     */
    private ServiceManager _serviceManager;

    /**
     * Create the shutdown callback with a reference to the service manager.
     * @param mgr the service manager instance.
     */
    public ServiceShutdownThread(ServiceManager mgr) {
        _serviceManager = mgr;
    }

    /**
     * Call the destroy method of the service manager, log any exceptions thrown.
     */
    public void run() {
        try {
            _serviceManager.destroy();
        } catch (Exception e) {
            try {
                LOG.error("Exception destroying service manager.", e);
            } catch (Throwable t) {
                //If somehow the logging got shutdown before this was called....
                System.err.println("ServiceShutdownThread: Error destroying service manager.  Exception Message = "
                        + t.getMessage());
            }
        }
    }

}