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 Venkat Dokiparthi <ve...@peregrine.com> on 2002/04/23 18:12:17 UTC

problem loading class

Hi folks,

We are having a problem loading the service class on Solaris with iPlanet
6.0 web server and Servlet Exec 4.1 (servlet engine).  This class is part of
a jar file placed in WEB-INF/lib directory.  Regular servlet is able to find
this class but not AxisServlet.  I see AxisClassLoader is extending java
ClassLoader, and in the constructor it does
super(Thread.currentThread().getContextClassLoader()).  So if a thread from
a servlet engine doesn't set its context class loader, Axis is defaulting to
default classloader.  I think it is a bug in Axis.  Instead of using current
thread's context class loader, it should accept a parameter in the
constructor of a classloader.  Whoever instantiating AxisClassLoader can
pass this argument, which could be the classloader of the class that is
instantiating the AxisClassLoader.

Here are the errors we receive on the client:

HTTP/1.1 500 Internal server error Server: Netscape-Enterprise/6.0 Date:
Mon, 22 Apr 2002 02:14:03 GMT Content-type: text/xml; charset=utf-8
Content-length: 2615  <?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <soap:Fault>
   <soap:faultcode
xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</soap:fault
code>
   <soap:faultstring>java.lang.ClassNotFoundException:
com.peregrine.arsys.ws.services.ARService</soap:faultstring>
   <soap:detail>
    <ns2:exceptionName
xmlns:ns2="http://xml.apache.org/axis/">java.lang.ClassNotFoundException</ns
2:exceptionName>
    <ns3:stackTrace
xmlns:ns3="http://xml.apache.org/axis/">java.lang.ClassNotFoundException:
com.peregrine.arsys.ws.services.ARService
	at java.lang.ClassLoader.findClass(ClassLoader.java:348)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
	at
org.apache.axis.utils.AxisClassLoader.loadClass(AxisClassLoader.java:151)
	at
org.apache.axis.utils.AxisClassLoader.lookup(AxisClassLoader.java:165)
	at
org.apache.axis.providers.java.JavaProvider.getNewServiceObject(JavaProvider
.java:337)
	at
org.apache.axis.providers.java.JavaProvider.getServiceObject(JavaProvider.ja
va:117)
	at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:216)
	at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:253)
	at org.apache.axis.server.AxisServer.invoke(AxisServer.java:288)
	at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:485)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at
com.newatlanta.servletexec.ServletExec.CallServletService(ServletExec.java:1
582)
	at
com.newatlanta.servletexec.SERequestDispatcher.forwardServlet(SERequestDispa
tcher.java:212)
	at
com.newatlanta.servletexec.SERequestDispatcher.forward(SERequestDispatcher.j
ava:134)
	at
com.newatlanta.servletexec.ApplicationInfo.processApplRequest(ApplicationInf
o.java:1016)
	at
com.newatlanta.servletexec.ServerHostInfo.processApplRequest(ServerHostInfo.
java:817)
	at
com.newatlanta.servletexec.ServletExec.ProcessRequest(ServletExec.java:1116)
	at
com.newatlanta.servletexec.ServletExec.ProcessRequest(ServletExec.java:966)
	at
com.newatlanta.servletexec.ServletExecService.processServletRequest(ServletE
xecService.java:165)
	at
com.newatlanta.servletexec.ServletExecService.Run(ServletExecService.java:19
7)
	at
com.newatlanta.servletexec.HttpServerRequest.run(HttpServerRequest.java:106)
</ns3:stackTrace>
   </soap:detail>
  </soap:Fault>
 </soap:Body>
</soap:Envelope>

Thanks,
Venkat

Venkat Dokiparthi
Staff Product Developer
Peregrine Systems
650-903-5294(pH) 650-919-5676(fax)
mailto:venkat.dokiparthi@peregrine.com
http://www.peregrine.com


Re: problem loading class

Posted by Daniel Chisholm <da...@attbi.com>.
Venkat,

I'm new to Axis but the problem that you are experiencing sounds a lot like
the problem that I was having earlier--the jar files that were placed in the
WEB-INF\lib directory were being ignored.  The problem proved to be
associated with J2SDK 1.4.  The solution is set the java.endorsed.dirs
system property to include your jar file.  I posted the following message
earlier.

Anybody attempting to run Axis with J2SDK 1.4 will need to set the Java
system property java.endorsed.dirs.

"Note: The system property java.endorsed.dirs specifies one
or more directories where the Java runtime environment searches
for JAR files. You must set this system property only when
running J2EE SDK 1.3.x on the J2SDK 1.4."

The above quote was copied from the following link.

http://developer.java.sun.com/developer/technicalArticles/WebServices/wsj2ee
/

Unfortunately, I did not see a similar comment in the Apache documentation.
Certainly, it wasn't in the installation instructions.

I set the java.endorsed.dirs system variable in the
%CATALINA_HOME%\bin\setclasspath.bat file.  Of course, UNIX users should use
setclasspath.sh

I hope that helps.

Dan

----- Original Message -----
From: "Venkat Dokiparthi" <ve...@peregrine.com>
To: <ax...@xml.apache.org>
Sent: Tuesday, April 23, 2002 9:12 AM
Subject: problem loading class


> Hi folks,
>
> We are having a problem loading the service class on Solaris with iPlanet
> 6.0 web server and Servlet Exec 4.1 (servlet engine).  This class is part
of
> a jar file placed in WEB-INF/lib directory.  Regular servlet is able to
find
> this class but not AxisServlet.  I see AxisClassLoader is extending java
> ClassLoader, and in the constructor it does
> super(Thread.currentThread().getContextClassLoader()).  So if a thread
from
> a servlet engine doesn't set its context class loader, Axis is defaulting
to
> default classloader.  I think it is a bug in Axis.  Instead of using
current
> thread's context class loader, it should accept a parameter in the
> constructor of a classloader.  Whoever instantiating AxisClassLoader can
> pass this argument, which could be the classloader of the class that is
> instantiating the AxisClassLoader.
>
> Here are the errors we receive on the client:
>
> HTTP/1.1 500 Internal server error Server: Netscape-Enterprise/6.0 Date:
> Mon, 22 Apr 2002 02:14:03 GMT Content-type: text/xml; charset=utf-8
> Content-length: 2615  <?xml version="1.0" encoding="UTF-8"?>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>  <soap:Body>
>   <soap:Fault>
>    <soap:faultcode
>
xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</soap:fault
> code>
>    <soap:faultstring>java.lang.ClassNotFoundException:
> com.peregrine.arsys.ws.services.ARService</soap:faultstring>
>    <soap:detail>
>     <ns2:exceptionName
>
xmlns:ns2="http://xml.apache.org/axis/">java.lang.ClassNotFoundException</ns
> 2:exceptionName>
>     <ns3:stackTrace
> xmlns:ns3="http://xml.apache.org/axis/">java.lang.ClassNotFoundException:
> com.peregrine.arsys.ws.services.ARService
> at java.lang.ClassLoader.findClass(ClassLoader.java:348)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
> at
> org.apache.axis.utils.AxisClassLoader.loadClass(AxisClassLoader.java:151)
> at
> org.apache.axis.utils.AxisClassLoader.lookup(AxisClassLoader.java:165)
> at
>
org.apache.axis.providers.java.JavaProvider.getNewServiceObject(JavaProvider
> .java:337)
> at
>
org.apache.axis.providers.java.JavaProvider.getServiceObject(JavaProvider.ja
> va:117)
> at
> org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:216)
> at
> org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:253)
> at org.apache.axis.server.AxisServer.invoke(AxisServer.java:288)
> at
> org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:485)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
com.newatlanta.servletexec.ServletExec.CallServletService(ServletExec.java:1
> 582)
> at
>
com.newatlanta.servletexec.SERequestDispatcher.forwardServlet(SERequestDispa
> tcher.java:212)
> at
>
com.newatlanta.servletexec.SERequestDispatcher.forward(SERequestDispatcher.j
> ava:134)
> at
>
com.newatlanta.servletexec.ApplicationInfo.processApplRequest(ApplicationInf
> o.java:1016)
> at
>
com.newatlanta.servletexec.ServerHostInfo.processApplRequest(ServerHostInfo.
> java:817)
> at
>
com.newatlanta.servletexec.ServletExec.ProcessRequest(ServletExec.java:1116)
> at
>
com.newatlanta.servletexec.ServletExec.ProcessRequest(ServletExec.java:966)
> at
>
com.newatlanta.servletexec.ServletExecService.processServletRequest(ServletE
> xecService.java:165)
> at
>
com.newatlanta.servletexec.ServletExecService.Run(ServletExecService.java:19
> 7)
> at
>
com.newatlanta.servletexec.HttpServerRequest.run(HttpServerRequest.java:106)
> </ns3:stackTrace>
>    </soap:detail>
>   </soap:Fault>
>  </soap:Body>
> </soap:Envelope>
>
> Thanks,
> Venkat
>
> Venkat Dokiparthi
> Staff Product Developer
> Peregrine Systems
> 650-903-5294(pH) 650-919-5676(fax)
> mailto:venkat.dokiparthi@peregrine.com
> http://www.peregrine.com
>