【问题标题】:Weblogic 10.3.1 redeploy reloading classesWeblogic 10.3.1 重新部署重载类
【发布时间】:2011-06-04 16:46:27
【问题描述】:
我们有一个类,Foo,它是一个单例并且继承自 Thread。重新部署后我们遇到了一些问题,其中似乎有 2 个线程可能正在运行。每次 Foo 从睡眠中醒来时,我添加了一些打印语句来检索 ClassLoader。打印结果表明实际上已经使用不同的 ClassLoader 创建了该类的另一个实例。
我不知道它是否相关,但 Foo 总是通过 Foo::instance 第一次通过会话 Bean 创建。 Foo 旨在作为服务运行以处理数据库清理。
谢谢
【问题讨论】:
标签:
weblogic-10.x
redeploy
【解决方案1】:
显然有 2 种重新部署方法。似乎它们都将继续让旧应用程序运行,直到它不再为请求提供服务。这两种方法仅在删除应用程序的方式上有所不同。我们使用的方法保持旧应用程序完全运行,并使用不同的类加载器来加载新应用程序。我们的旧应用程序没有被取消部署。话虽如此,如果您在未显式终止的某处运行线程(事实证明是这种情况),您可能会通过同时执行的不同类加载器加载同一类的 2 个实例。运行 Weblogic 没有死机的线程被认为是不好的做法和不安全的。现在我知道为什么了。