Author: dims
Date: Sat Mar  8 12:15:29 2008
New Revision: 635068

URL: http://svn.apache.org/viewvc?rev=635068&view=rev
Log:
Fix for AXIS2-3382 - NPE throws when invoking jax-ws calculator sample service. 
(Added a HACK to support the old use case of specifying a services.xml with 
JAXWSMessageReceiver)

Modified:
    
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java

Modified: 
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java?rev=635068&r1=635067&r2=635068&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/JAXWSMessageReceiver.java
 Sat Mar  8 12:15:29 2008
@@ -19,20 +19,21 @@
 
 package org.apache.axis2.jaxws.server;
 
-import javax.xml.ws.Binding;
-import javax.xml.ws.WebServiceException;
-
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
 import org.apache.axis2.description.WSDL2Constants;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.engine.MessageReceiver;
 import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.core.InvocationContextFactory;
 import org.apache.axis2.jaxws.core.MessageContext;
+import org.apache.axis2.jaxws.description.DescriptionFactory;
+import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.description.ServiceDescription;
 import org.apache.axis2.jaxws.handler.AttachmentsAdapter;
 import org.apache.axis2.jaxws.handler.MEPContext;
 import org.apache.axis2.jaxws.handler.TransportHeadersAdapter;
@@ -47,6 +48,9 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import javax.xml.ws.Binding;
+import javax.xml.ws.WebServiceException;
+
 /**
  * The JAXWSMessageReceiver is the entry point, from the server's perspective, 
to the JAX-WS code.
  * This will be called by the Axis Engine and is the end of the chain from an 
Axis2 perspective.
@@ -73,20 +77,37 @@
         //Get the name of the service impl that was stored as a parameter
         // inside of the services.xml.
         AxisService service = axisRequestMsgCtx.getAxisService();
+        
+        org.apache.axis2.description.Parameter svcClassParam =
+                service.getParameter(PARAM_SERVICE_CLASS);
+
+        if (svcClassParam == null) {
+            throw new RuntimeException(
+                    Messages.getMessage("JAXWSMessageReceiverNoServiceClass"));
+        }
+
+        Parameter endpointDescParam =
+                
service.getParameter(EndpointDescription.AXIS_SERVICE_PARAMETER);
+        if (endpointDescParam == null) {
+            ClassLoader serviceClassLoader = service.getClassLoader();
+            String serviceClass = (String) svcClassParam.getValue();
+            try {
+                Class clazz = Class.forName(serviceClass, true, 
service.getClassLoader());
+                ServiceDescription serviceDesc =
+                        
DescriptionFactory.createServiceDescriptionFromServiceImpl(
+                                clazz, service);
+            } catch (ClassNotFoundException e) {
+                throw new RuntimeException(
+                        
Messages.getMessage("JAXWSMessageReceiverNoServiceClass"));
+            }
+        }
         AxisOperation operation = axisRequestMsgCtx.getAxisOperation();
         String mep = operation.getMessageExchangePattern();
         if (log.isDebugEnabled()) {
             log.debug("MEP: " + mep);
         }
 
-        org.apache.axis2.description.Parameter svcClassParam =
-                service.getParameter(PARAM_SERVICE_CLASS);
         try {
-
-            if (svcClassParam == null) {
-                throw new RuntimeException(
-                        
Messages.getMessage("JAXWSMessageReceiverNoServiceClass"));
-            }
 
             //This assumes that we are on the ultimate execution thread
             ThreadContextMigratorUtil.performMigrationToThread(



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to