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 praveen vijayan <pr...@yahoo.com> on 2012/06/21 23:12:05 UTC

JNDI NameNotFoundException with Axis2 1.6.2 JAXWS webservice.

Hi,

I am facing a problem with JNDI lookup after we moved our JAX-WS based web service from Axis2 1.6.1 to axis 1.6.2 library.

Following is the exception that gets thrown from the Impl class :

Caused by: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:803)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    

The service runs on Tomcat 7 (JDK 6) and deployed as a WAR application. It was working fine (i.e. it was able to lookup the name) when I was using 1.6.1 version of axis jar.I have declared the JNDI resource names in context.xml.The problem started when I discarded 1.6.1 jars and started using 1.6.2 Axis2 jars.

It looks like the issue is happening due to Thread Context Class Loader (TCCL) setting in JAXWSMessageReceiver.java.Here is the block of code that I suspect is causing the issue for us.

        AxisService service = axisRequestMsgCtx.getAxisService();
        // we need to set the deployment class loader as the TCCL. This is because, in JAX-WS
        // services, there can be situations where we have to load classes from the deployment
        // artifact (JAX-WS jar file) in the message flow. Ex: Handler classes in the service
        // artifact. Adding this as a fix for AXIS2-4930.
        setContextClassLoader(service.getClassLoader());
        
I think when the service class's class loader is set as TCCL, the JNDI object present in WebAppClassLoader become invisible to the current TCCL. If I comment 'setContextClassLoader(...)' statement the JNDI lookup passes (i.e. it works fine.).

Hence I request help from the forum, to know if there is any configuration (Tomcat/Axis) that we should change or if this is an issue with setting of TCCL in 1.6.2 version. When I looked at 1.6.1 version of the code there was a merging of class loader happening, which is not there in 1.6.2 version.

Thanks in advance. Kindly let me know if I need to provide additional information.

Thanks,
Praveen