在我的webservice应用程序中,我必须集成第三方模块来验证业务规则,这些模块附带了相当旧的库。
旧图书馆与我的新图书馆发生冲突。
有没有办法在正在运行的网络服务中的单独线程/类加载器中隔离第三方模块?
答案 0 :(得分:1)
您要找的是OSGi。
答案 1 :(得分:0)
当然,但你必须通过这样的反射来使用它:
ClassLoader classLoader = new URLClassLoader (
new URL [] {/* Classpath or isolated module here */},
ClassLoader.getSystemClassLoader ().getParent ());
Class <?> isolatedModuleClass = classLoader.loadClass (
/* Full name of class from isolated module */);
Object isolatedObject =
isolatedModuleClass.
getConstructor (/* Constructor argument types */).
newInstance (/* Constructor arguments */);
Object result =
isolatedModuleClass.
getMethod (/* Method name */, /* Method parameter types */).
invoke (isolatedObject, /* Method arguments */);