You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Guus der Kinderen <Gu...@nimbuzz.com> on 2006/07/31 17:59:54 UTC

Running services in distinct classloaders?

Hi,

I'm currently running Axis inside a Jetty container. As far as I can tell,
the soap services I generate use the classloader of that container. Is there
any way I can control which service uses which classloader? Is it even
possible to load services for a given container using a distinct classloader
for each service?

My problem is this:

I'm using a plugin system. I have one plugin that provides the Jetty
container, running the Axis webapplication. Several of my other plugins
create, amongst other things, Axis soap services. Those services use the
classloader of the plugin that provides the Jetty container (because that's
what loaded Axis in the first place). This makes it impossible for those
soap interfaces to interact with the other classes of the plugins, because
those were loaded by their own classloader. 

The two options that I see don't apply: I can't have the classloader of the
container-plugin delegate to the other plugins, because I have more than one
plugin that defines soap services (and I can only have one parent
classloader to delegate to). I can't use the same classloader for all
plugins, either: whenever I replace a plugin with new code, the old code
would remain in the classloader (or I would have to unload the classloader
by reloading all plugins, which is not an attractive option either).

What's the best strategy here? Kind regards,

Guus der Kinderen

Buzzaa Media Group B.V.
Patrijsweg 102
2289 EZ  RIJSWIJK (ZH)
the Netherlands