2011-01-06 53 views
0

我们有一个类Foo,它是一个单例并从Thread继承。重新部署后,我们遇到了一些问题,看起来好像有2个这样的线程可能正在运行。每当Foo从睡梦中醒来时,我都添加了一些打印语句来检索ClassLoader。这些印刷品表明实际上已经使用不同的ClassLoader创建了该类的另一个实例。Weblogic 10.3.1重新部署重载类

我不知道它是否相关,但Foo总是通过会话Bean第一次通过Foo :: instance创建。 Foo旨在作为一项服务运行,以照顾DB消毒。

谢谢

回答

0

显然有2个重新部署方法。看起来他们都会继续让旧的应用程序运行,直到它不再处理请求。这两种方法仅在移除应用程序方面有所不同。我们正在使用的方法使旧应用程序完全运行,并使用不同的类加载器来加载新的应用程序。我们的旧应用程序没有被部署。也就是说,如果你在一个没有被明确终止的地方运行一个线程(事实证明是这样),你可能会有两个同一类的实例通过不同的类加载器同时执行。 Weblogic运行的线程没有死锁 - 被认为是不好的做法,也是不安全的。现在我知道为什么。