私はJBoss 5.1内にEJB3-Timerを持っています。 編集: ShutdownHookは、doTimeOut()が優雅に終了できるフラグを設定する必要があります(そうしないと、ジョブが完了し、シャットダウンはこのタイマーが終了するまで停止します)。JBoss 5.1内のShutdownHook内のjava.util.Loggerが常にserver.logに出力されるとは限りません。
@Stateless
class Timer {
private static Thread hook;
static {
hook = new ShutdownHook();
}
@Timeout
public void doTimeOut(){
//some code
}
private class ShutdownHook implements Runnable(){
Logger.getLogger(ShutdownHook.class.getName()).log(Level.INFO, "MyBEAN.ShutdownHook execute hook " + hook); // Not always printed to log
Logger.getAnonymousLogger().log(Level.INFO, "MyBEAN.ShutdownHook execute hook " + hook); // throwns Exception
System.out.println("MyBEAN.ShutdownHook execute hook " + hook);
[...] // some code
}
}
私はこの2つのポストを見つけたが、彼らは2005年からであり、バグがCLOSEDとしてマークされています
http://www.pankaj-k.net/archives/2005/08/jboss_shutdown.html
http://jira.jboss.com/jira/browse/JBAS-2087
はanonymousLoggerによってスローされた例外がありますヌルポインタ:
2011-02-02 09:16:33,120 ERROR [STDERR] Exception in thread "Thread-33"
2011-02-02 09:16:33,122 ERROR [STDERR] java.lang.NullPointerException
2011-02-02 09:16:33,122 ERROR [STDERR] at org.apache.log4j.CategoryKey.<init>(CategoryKey.java:31)
2011-02-02 09:16:33,122 ERROR [STDERR] at org.apache.log4j.Hierarchy.getLogger(Hierarchy.java:261)
2011-02-02 09:16:33,122 ERROR [STDERR] at org.apache.log4j.Hierarchy.getLogger(Hierarchy.java:242)
2011-02-02 09:16:33,122 ERROR [STDERR] at org.apache.log4j.LogManager.getLogger(LogManager.java:188)
2011-02-02 09:16:33,122 ERROR [STDERR] at org.apache.log4j.Logger.getLogger(Logger.java:104)
2011-02-02 09:16:33,122 ERROR [STDERR] at org.jboss.logbridge.LogBridgeHandler.publish(LogBridgeHandler.java:71)
2011-02-02 09:16:33,122 ERROR [STDERR] at java.util.logging.Logger.log(Unknown Source)
2011-02-02 09:16:33,122 ERROR [STDERR] at java.util.logging.Logger.doLog(Unknown Source)
2011-02-02 09:16:33,122 ERROR [STDERR] at java.util.logging.Logger.log(Unknown Source)
2011-02-02 09:16:33,122 ERROR [STDERR] at com.demo.MyBEAN$ShutdownHook.run(MyBEAN.java:202)
アイデア?シャットダウンフックは毎回実行を取得することは保証されません。
のJBoss 5.1はSLF4Jの独自のコピーを含んでなり、なぜひどい 'java.util.logging'ものの代わりにそれを使用していませんか? – skaffman