Service classloader problem
---------------------------
Key: AXIS2-537
URL: http://issues.apache.org/jira/browse/AXIS2-537
Project: Apache Axis 2.0 (Axis2)
Type: Bug
Components: core, deployment
Versions: 0.95
Environment: Bea Weblogic 8.1 SP5, All OS, Java 1.4.2_05
Reporter: Dmitriy Kiriy
I have axi2.war\WEB-INF\services\AssetService.aar
in that file I have:
org/apache/axis2/
AssetServiceStub.class
AssetServiceStub$1.class - AssetServiceStub$30.class
AssetServiceSkeleton.class
AssetServiceMessageReceiverInOut.class
AssetServiceCallbackHandler.class
com.mypackage/
AssetServiceImpl (extends AssetServiceSkeleton)
META-INF/
services.xml
AsserService.wsdl
(<parameter locked="false" name="ServiceClass">
com.mypackage.AssetServiceImpl
</parameter>)
All classes excluding com.mypackage.AssetServiceImpl was generated by WSDL2Java
tool.
We have a class loading problem. So, I little bit change
AbstractMessageReceiver.java:
protected Object makeNewServiceObject(MessageContext msgContext) throws
AxisFault {
try {
AxisService service =
msgContext.getOperationContext().getServiceContext().getAxisService();
ClassLoader classLoader = service.getClassLoader();
Parameter implInfoParam = service.getParameter(SERVICE_CLASS);
if (implInfoParam != null) {
try {
Class implClass = classLoader.loadClass(((String)
implInfoParam.getValue()));
return implClass.newInstance();
} catch (Throwable e)
{
System.err.println("While tring to load class "+(String)
implInfoParam.getValue()+" got the following problem: "+e);
e.printStackTrace(System.err);
throw AxisFault.makeFault(new Exception(e));
}
} else {
throw new AxisFault(Messages.getMessage("paramIsNotSpecified",
"SERVICE_CLASS"));
}
} catch (Exception e) {
throw AxisFault.makeFault(e);
}
}
So, in lines:
System.err.println("While tring to load class "+(String)
implInfoParam.getValue()+" got the following problem: "+e);
e.printStackTrace(System.err);
throw AxisFault.makeFault(new Exception(e));
I got:
While tring to load class com.mypackage.AssetServiceImpl got the following
problem: java.lang.NoClassDefFoundError: org/apache/axis2/AssetServiceSkeleton
java.lang.NoClassDefFoundError: org/apache/axis2/AssetServiceSkeleton
at
java.lang.ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;(Unknown
Source)
at
java.security.SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;(SecureClassLoader.java:123)
at
weblogic.utils.classloaders.GenericClassLoader.findLocalClass(Ljava/lang/String;)Ljava/lang/Class;(GenericClassLoader.java:480)
at
weblogic.utils.classloaders.GenericClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;(GenericClassLoader.java:182)
at
weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;(ChangeAwareClassLoader.java:61)
at
java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;(Unknown
Source)
at
java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;(Unknown
Source)
at
java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;(Unknown
Source)
at
java.lang.ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;(Unknown
Source)
at
java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;(Unknown
Source)
at
org.apache.axis2.receivers.AbstractMessageReceiver.makeNewServiceObject(Lorg/apache/axis2/context/MessageContext;)Ljava/lang/Object;(AbstractMessageReceiver.java:52)
at
org.apache.axis2.receivers.AbstractMessageReceiver.getTheImplementationObject(Lorg/apache/axis2/context/MessageContext;)Ljava/lang/Object;(AbstractMessageReceiver.java:95)
at
org.apache.axis2.AssetServiceMessageReceiverInOut.invokeBusinessLogic(Lorg/apache/axis2/context/MessageContext;Lorg/apache/axis2/context/MessageContext;)V(AssetServiceMessageReceiverInOut.java:24)
at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(Lorg/apache/axis2/context/MessageContext;)V(AbstractInOutSyncMessageReceiver.java:37)
at
org.apache.axis2.engine.AxisEngine.receive(Lorg/apache/axis2/context/MessageContext;)V(AxisEngine.java:408)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(Lorg/apache/axis2/context/MessageContext;Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V(HTTPTransportUtils.java:288)
at
org.apache.axis2.transport.http.AxisServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(AxisServlet.java:160)
at
javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(HttpServlet.java:760)
at
javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava/lang/Object;(ServletStubImpl.java:1072)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblogic/servlet/internal/FilterChainImpl;)V(ServletStubImpl.java:465)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(ServletStubImpl.java:348)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava/lang/Object;(WebAppServletContext.java:6981)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/security/subject/AbstractSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(SecurityManager.java:121)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic/servlet/internal/ServletRequestImpl;Lweblogic/servlet/internal/ServletResponseImpl;)V(WebAppServletContext.java:3892)
at
weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic/kernel/ExecuteThread;)V(ServletRequestImpl.java:2766)
at
weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest;)V(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:183)
at java.lang.Thread.startThreadFromVM(Ljava/lang/Thread;)V(Unknown
Source)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira