Java 为什么Hazelcast能够';我的应用服务器上没有关机吗?
我需要在WebSphereApplicationServer(8.5)上部署我的企业应用程序 为了处理hazelcast的生命周期,我准备了以下监控对象:Java 为什么Hazelcast能够';我的应用服务器上没有关机吗?,java,jakarta-ee,websphere,hazelcast,Java,Jakarta Ee,Websphere,Hazelcast,我需要在WebSphereApplicationServer(8.5)上部署我的企业应用程序 为了处理hazelcast的生命周期,我准备了以下监控对象: public class HazelMonitor{ private static HazelcastInstance inst = null; public static synchronized getInstance(){ if(inst == null){ inst = 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();
}
}
除了我试图关闭我的服务器外,一切似乎都正常:Hazelcast似乎无法关闭,最后,服务器挂起,迫使我终止进程。
一旦我终止进程,我就会收到一个关于未找到类的hazelcast异常节点$2
我做错了什么?如何确保Hazelcast与我的应用程序一起正常关闭?您使用的是哪个Hazelcast版本?我们修复了3.8中可能导致此类行为的类加载器泄漏(请参阅) 因此,如果您以前使用过旧版本,请尝试Hazelcast 3.8。否则,线程转储将非常有助于了解Hazelcast正在做什么 您可以通过找到所有正在运行的Java进程
jps -l
然后通过创建线程转储
jstack <PID>
jstack
您使用的是哪个Hazelcast版本?我们修复了3.8中可能导致此类行为的类加载器泄漏(请参阅)
因此,如果您以前使用过旧版本,请尝试Hazelcast 3.8。否则,线程转储将非常有助于了解Hazelcast正在做什么
您可以通过找到所有正在运行的Java进程
jps -l
然后通过创建线程转储
jstack <PID>
jstack
您是否确认EJB@PreDestroy
实际上正在被调用,并且正在进行.shutdown()
调用?我猜在调用PreDestroy
方法时,类加载器已经被杀死。尝试将其包装到Try/catch块中,记录发生的任何异常。您是否确认EJB@PreDestroy
实际上正在被调用,并且.shutdown()
调用正在发生?我猜调用PreDestroy
方法时,类加载器已经被杀死。尝试将其包装到Try/catch块中,记录发生的任何异常。