In my webservice application I have to integrate a third party module to validate business rules, these modules are shipped with rather old libraries.

The old libraries are in conflict with my newer one.

Is there a way to isolate the third party module in a seperated thread/classloader within the running webservice?

有帮助吗?

解决方案

What you are looking for is called OSGi.

其他提示

Sure, but you will have to use it via reflection like this:

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 */);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top