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

Reply via email to