我有一个使用共享库的WebSphere应用程序。每当对共享库路径中的任何jar进行更新时,都需要重新启动使用该jar的应用程序以获取最新更改。是否可以使WAS应用程序重新加载共享库而不必重新启动?

我正在使用传统的WAS 8.5.5.16。

最佳答案

简短答案:不可以。

长答案:有一个技术原因,您不能这样做。 Java类加载器通常不支持重新创建已经定义的Class对象-一旦定义了一个类,就定义了它,这就是在类加载器的整个生命周期中进行的工作(loadClass的第一步是“ findLoadedClass”,它会搜索以获取您正在加载的类的现有版本)。为了使Java同意加载Class对象的新实例,您需要创建一个全新的类加载器,并且在Java EE(或至少是WAS)设置中,需要重新启动应用程序。

我相信从您的问题来看,您只是将普通的共享库与您的应用程序相关联,因此这不一定适用,但是请注意,如果您使用隔离的共享库(具有自己的类加载器)或在服务器上配置的共享库加载器,甚至重新启动应用程序也是不够的,因为那些库加载器是由服务器而不是由应用程序创建的,因此它们需要重新启动服务器以获取更改。

关于java - 是否可以在不重新启动应用程序的情况下重新加载WebSphere Application Server(WAS)中的共享库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61412377/

10-10 04:20