但是问题出现在版本控制上。 假设用户动态附加了我的代理程序的第1个版本。 然后我给他第2个版本。现在由于他的应用服务器自从安装第1个版本的代理程序以来从未关闭过,所以第1个版本的类仍在加载中。
我需要一种方法,使得当客户端安装第2个版本的Java代理程序时,第1个版本会被卸载。
我知道一种方法是为我的Java代理程序的类编写一个自定义类装入器,并将类装入器引用设置为null。 然而,在这种情况下,我将无法检测引导类路径中的类,因为我的类装入器将位于引导类装入器的层次结构下面,因此我的用户无法检测像ArrayList这样的类,因为如果我在ArrayList的方法中添加一个调用到我的代理程序类的方法,则引导类装入器将无法看到它们。
那么有没有办法解决引导类路径问题并仍然卸载先前代理程序的类呢?