0

我们有一个类 Foo,它是一个单例并且继承自 Thread。重新部署后我们遇到了一些问题,其中似乎有 2 个线程可能正在运行。每次 Foo 从睡眠中醒来时,我添加了一些打印语句来检索 ClassLoader。打印结果表明实际上已经使用不同的 ClassLoader 创建了该类的另一个实例。

我不知道它是否相关,但 Foo 总是通过 Foo::instance 第一次通过会话 Bean 创建。Foo 旨在作为服务运行以处理数据库清理。

谢谢

4

1 回答 1

0

显然有2种重新部署方法。似乎他们都将继续让旧应用程序运行,直到它不再为请求提供服务。这两种方法仅在删除应用程序的方式上有所不同。我们使用的方法保持旧应用程序完全运行,并使用不同的类加载器来加载新应用程序。我们的旧应用程序没有被取消部署。话虽如此,如果您在未显式终止的某处运行线程(事实证明是这种情况),您可能会通过同时执行的不同类加载器加载同一类的 2 个实例。运行 Weblogic 没有死机的线程被认为是不好的做法和不安全的。现在我知道为什么了。

于 2011-01-07T14:17:19.543 回答