axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Galpin <>
Subject Re: archive lib directory and 3rd party libraries (axis2/tomcat 6)
Date Mon, 25 Jan 2010 21:15:55 GMT
Hi Andreas

I tried setting the TCCL to both the class loader of the service context as well as the service
group context before starting the threaD, but still no change. I guess this leaves me with
a couple of questions.

1. Do subsequent threads spawned inherit the same TCCL? I'm pretty sure other threads are
spawned by this thread which then go on to do the work.
2. How can I tell what class loader is being used? Just log whatever this.getClassLoader()
returns anywhere I care?
3. Is init perhaps the wrong place to be firing this off? I originally tried in the startUp
method but iirc member variables initialized here were not retained when the service methods
were invoked.


On Jan 25, 2010, at 3:57 PM, Andreas Veithen wrote:

> Charles,
> That might actually explain the issue. Here is some additional info:
> * ORB.init looks up classes from the thread context class loader (I
> checked that in the JRE sources).
> * ServiceTCCL=composite means that Axis2 sets the TCCL to the service
> class loader when entering a service method and resets it after the
> method exits.
> * A new thread that is being created inherits the TCCL from its parent
> thread (see Javadoc of java.lang.Thread).
> However, it is possible that Axis2 doesn't take the ServiceTCCL
> property into account when executing a lifecycle method (maybe that
> should be considered as a bug). This would mean that your thread ends
> up with the TCCL set to the Web app class loader. Since the thread is
> managed by your service, you can obviously set the TCCL for that
> thread to whatever you want (It will have no impact on Axis2 nor on
> the servlet container). I would try to set it to the service class
> loader (You should be able to get a reference to that class loader
> from the parameters passed to the lifecycle method).
> Andreas

View raw message