我有一个利用共享库的WebSphere应用程序。每当对共享库路径中的任何jar进行更新时,都需要重新启动使用它的应用程序以获得最新的更改。有没有可能让WAS应用程序重新加载共享库,而不必重启?
我使用的是传统型WAS 8.5.5.16。
发布于 2020-04-25 00:47:32
简短的回答是:不。
答案很长:你不能这样做是有技术原因的。Java类加载器通常不支持重新创建它们已经定义的类对象-一旦定义了类,它就会被定义,这就是类加载器的生命周期( loadClass中的第一步是"findLoadedClass",它会搜索正在加载的类的现有版本)。为了让Java同意加载Class对象的新实例,您需要在Java (或至少WAS)设置中创建一个全新的类加载器,该设置需要重新启动应用程序。
从你的问题中我相信你只是简单地将一个普通的共享库与你的应用程序相关联,所以这并不一定适用,但我要指出的是,如果你使用一个独立的共享库(它有自己的类加载器)或在服务器上配置的共享库加载器,即使重新启动应用程序也是不够的,因为这些库加载器是使用服务器创建的,而不是与应用程序一起创建的,所以它们需要重新启动服务器才能获得更改。
发布于 2020-04-27 20:03:41
不是的。它们只在服务器启动时加载一次。
https://stackoverflow.com/questions/61412377
复制相似问题