2013-09-02
java中碰到程序异常退出时,需要做一些资源清理工作,例如是否数据库连接,清理临时文件夹,java的Runtime类提供一个回调函数,回调函数是一个线程类,在当前JVM退出时调用,我们可以在回调函数中添加代码,清理资源,日志记录等等。一下是代码清单:
//回调函数类
protected class CatalinaShutdownHook extends Thread {
public void run() {
try {
if (getServer() != null) {
Catalina.this.stop();
}
} catch (Throwable ex) {
log.error(sm.getString("catalina.shutdownHookFail"), ex);
} finally {
// If JULI is used, shut JULI down *after* the server shuts down
// so log messages aren't lost
LogManager logManager = LogManager.getLogManager();
if (logManager instanceof ClassLoaderLogManager) {
((ClassLoaderLogManager) logManager).shutdown();
}
}
}
//设置回调
Runtime.getRuntime().addShutdownHook(shutdownHook);
上面代码是tomcat中的一段,之前看过,没有记住,现在blog之。