エンタープライズアプリケーションをWebsphere Application Server(8.5)にデプロイする必要があります。 hazelcastのライフサイクルを扱うためにアプリケーションサーバーでHazelcastをシャットダウンできないのはなぜですか?
私は、次の監視対象を準備:
public class HazelMonitor{
private static HazelcastInstance inst = null;
public static synchronized getInstance(){
if(inst == null){
inst = Hazelcast.getOrCreateInstance(...);
}
return inst;
}
public static synchronized shutdown(){
if(inst != null){
inst.shutdown();
inst = null;
}
}
}
は今、私のEJBは、このようなものです:
public class MyEjb{
@PostConstruct
pulic void init(){
HazelMonitor.getInstance();
}
@PreDestroy
public void close(){
HazelMonitor.shutdown();
}
}
すべては私がシャットダウンしようとする場合を除き、私のサーバーを作業と思われます:ヘイゼルキャストはシャットダウンできないように見えますが、結局サーバーがハングしてプロセスを強制終了します。 プロセスを終了すると、見つからないクラスに関するヘイルキャスト例外が発生しますノード$ 2。
私は間違っていますか?私のアプリケーションと一緒にHazelcastが正常にシャットダウンする方法を教えてください。
を経由してスレッドダンプを作成することができますが、あなたは 'PreDestroy' @ EJBが'実際に呼び出されていることを確認したとしています。 shutdown() 'コールが起きていますか? –
'PreDestroy'メソッドが呼び出されたときにクラスローダーがすでに終了していると思います。 try/catchブロックにラップして、発生した例外を記録してください。 – noctarius