Question

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?

Was it helpful?

Solution

What you are looking for is called OSGi.

OTHER TIPS

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 */);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top