2

在我的 web 服务应用程序中,我必须集成一个第三方模块来验证业务规则,这些模块附带了相当旧的库。

旧图书馆与我的新图书馆发生冲突。

有没有办法将第三方模块隔离在正在运行的 web 服务中的单独线程/类加载器中?

4

2 回答 2

1

您正在寻找的是所谓的OSGi

于 2013-02-14T19:42:53.210 回答
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 */);
于 2013-02-14T19:49:11.607 回答