-----Original Message-----
From: Glen Daniels [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 07, 2002 12:32 PM
To: '[EMAIL PROTECTED]'
Subject: RE: classloader problemsYep, this looks like exactly the problem I fixed. Let us know if the current CVS helps, Dave!Thanks,--Glen-----Original Message-----
From: Sedukhin, Igor [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 07, 2002 3:09 PM
To: [EMAIL PROTECTED]
Subject: RE: classloader problemsDave,Glen just submitted something. It may as well fix your situation. You've got an array. Try next nightly build.-----Original Message-----
From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 07, 2002 2:54 PM
To: '[EMAIL PROTECTED]'
Subject: RE: classloader problemsYes, the class is available in the WEB-INF/classes directory, not in the system classpath.
Dave
-----Original Message-----
From: Sedukhin, Igor [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 07, 2002 7:00 AM
To: [EMAIL PROTECTED]
Subject: RE: classloader problems
Dave,
Are you sure the class it is trying to load (for a _RecordType type specified in WSDL) is available for a deployed Axis web app? That is, is it in WEB-INF/classes or in WEB-INF/lib?
Axis is inheriting the servlet classloader provided by the container. That's the guy that cannot load the class. It won't rely on the system CLASSPATH for security reasons. You'd have to provide it under a web app. The other approach is to define your classloader and jump arround Axis with it :).
-- Igor Sedukhin .. ([EMAIL PROTECTED])
-- (631) 342-4325 .. 1 CA Plaza, Islandia, NY 11788
-----Original Message-----
From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 06, 2002 7:07 PM
To: Axis-Dev (E-mail)
Subject: classloader problems
I'm having a problem with axis throwing a ClassNotFoundException when I try to access a deployed service. It chokes on [Lservice1._RecordType; (see the attached wsdl). I traced it down to the getLanguageSpecificType method in WSDDTypeMapping.
public Class getLanguageSpecificType()
throws ClassNotFoundException
{
if (typeQName != null) {
if (!WSDDConstants.WSDD_JAVA.equals(typeQName.getNamespaceURI())) {
throw new ClassNotFoundException(JavaUtils.
getMessage("badTypeNamespace00",
typeQName.getNamespaceURI(),
WSDDConstants.WSDD_JAVA));
}
String loadName = JavaUtils.getLoadableClassName(typeQName.getLocalPart());
ClassLoader cl = Thread.currentThread().getContextClassLoader();
return cl.loadClass(loadName);
}
throw new ClassNotFoundException(JavaUtils.getMessage("noTypeQName00"));
}
Now if I replace these two lines:
ClassLoader cl = Thread.currentThread().getContextClassLoader();
return cl.loadClass(loadName);
with this:
return Class.forName(loadName);
everything works. Why is the contex ClassLoader used instead of the default ClassLoader?
Here's the full stack trace:
java.lang.ClassNotFoundException: [Lservice1._RecordType;
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1307)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1156)
at org.apache.axis.deployment.wsdd.WSDDTypeMapping.getLanguageSpecificType(WSDDTypeMapping.java:230)
at org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:304)
at org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:251)
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:294)
at org.apache.axis.deployment.wsdd.WSDDDeployment.getService(WSDDDeployment.java:430)
at org.apache.axis.configuration.FileProvider.getService(FileProvider.java:208)
at org.apache.axis.AxisEngine.getService(AxisEngine.java:240)
at org.apache.axis.MessageContext.setTargetService(MessageContext.java:414)
at org.apache.axis.handlers.http.URLMapper.invoke(URLMapper.java:86)
at org.apache.axis.handlers.http.URLMapper.generateWSDL(URLMapper.java:94)
at org.apache.axis.strategies.WSDLGenStrategy.visit(WSDLGenStrategy.java:72)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:151)
at org.apache.axis.SimpleChain.generateWSDL(SimpleChain.java:137)
at org.apache.axis.server.AxisServer.generateWSDL(AxisServer.java:404)
at org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:287)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)
at java.lang.Thread.run(Thread.java:496)
Dave Dunkin
Title: Message
Yes,
that solved the problem. Thanks.
Dave
- classloader problems Dave Dunkin
- RE: classloader problems Sedukhin, Igor
- RE: classloader problems Dave Dunkin
- RE: classloader problems Sedukhin, Igor
- RE: classloader problems Glen Daniels
- Dave Dunkin