Domanda

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?

È stato utile?

Soluzione

What you are looking for is called OSGi.

Altri suggerimenti

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 */);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top