嵌入式hazelcast可防止Tomcat中的干净关闭

时间:2017-10-04 11:32:09

标签: java tomcat hazelcast

我在Tomcat 7 webapp中嵌入了hazelcast(3.8.2)。关机时我正在打电话

var options = new BackgroundJobServerOptions
        {
            SchedulePollingInterval = TimeSpan.FromMilliseconds(2000)
        };

        app.UseHangfireServer(options);

但我仍然在tomcat日志中收到此错误,这阻止了我的webapp的干净关闭。 myInstance.shutdown(); Hazelcast.shutdownAll(); 似乎是在服务器停止后尝试运行ClisterListenerSupport实例。

我是否错过了一些我应该添加到关机钩子的清理步骤?

HazelcastManagedThread

1 个答案:

答案 0 :(得分:0)

这很难解决。问题是,Tomcat已经处于关闭模式,并且类加载器不会加载新类。然而,Hazelcast首次使用关闭类,因此需要加载它们。解决这个问题实际上非常难看。您可以使用Class.forName(或其他反射机制)来加载类。您不必存储对类的引用,但这实际上会强制JVM加载其他依赖类。