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
service1.wsdl
Description: Binary data