質問

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