2
在我的web服务应用程序中,我必须集成第三方模块来验证业务规则,这些模块随附相当老的库。如何隔离分离的线程/类加载器中的java模块执行?
旧图书馆与我的新图书馆发生冲突。
有没有办法隔离正在运行的webservice中的分离线程/类加载器中的第三方模块?
在我的web服务应用程序中,我必须集成第三方模块来验证业务规则,这些模块随附相当老的库。如何隔离分离的线程/类加载器中的java模块执行?
旧图书馆与我的新图书馆发生冲突。
有没有办法隔离正在运行的webservice中的分离线程/类加载器中的第三方模块?
你在找什么叫做OSGi。
当然,但你必须通过这样的反射来使用它:
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 */);
对于我的需求OSGi的感觉就像打破车轮上的蝴蝶,是不是有一个更简单的方法? – Alex 2013-02-15 14:02:18
Java 8将包含模块化,名为[项目拼图](http://openjdk.java.net/projects/jigsaw/),我也会看看那里。 – 2013-02-15 15:11:17