You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by pr...@apache.org on 2008/03/13 14:15:32 UTC

svn commit: r636754 - in /webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws: framework/JAXWSDeployer.java server/EndpointController.java

Author: pradine
Date: Thu Mar 13 06:15:30 2008
New Revision: 636754

URL: http://svn.apache.org/viewvc?rev=636754&view=rev
Log:
Some work on AXIS2-3576.

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java?rev=636754&r1=636753&r2=636754&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java Thu Mar 13 06:15:30 2008
@@ -30,9 +30,15 @@
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.Parameter;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.jaxws.ExceptionFactory;
+import org.apache.axis2.jaxws.addressing.util.EndpointContextMap;
+import org.apache.axis2.jaxws.addressing.util.EndpointContextMapManager;
+import org.apache.axis2.jaxws.addressing.util.EndpointKey;
 import org.apache.axis2.jaxws.description.DescriptionFactory;
+import org.apache.axis2.jaxws.description.EndpointDescription;
 import org.apache.axis2.jaxws.server.JAXWSMessageReceiver;
 import org.apache.axis2.util.Loader;
 import org.apache.commons.io.FileUtils;
@@ -40,6 +46,7 @@
 import org.apache.commons.logging.LogFactory;
 
 import javax.jws.WebService;
+import javax.xml.namespace.QName;
 import javax.xml.ws.WebServiceProvider;
 import java.io.File;
 import java.io.FileInputStream;
@@ -64,8 +71,8 @@
 
     private static Log log = LogFactory.getLog(JAXWSDeployer.class);
 
-    protected ConfigurationContext configCtx = null;
-    protected AxisConfiguration axisConfig = null;
+    protected ConfigurationContext configCtx;
+    protected AxisConfiguration axisConfig;
 
     //To initialize the deployer
     public void init(ConfigurationContext configCtx) {
@@ -172,7 +179,7 @@
     protected AxisServiceGroup deployClasses(String groupName, URL location, ClassLoader classLoader, List classList)
             throws ClassNotFoundException, InstantiationException, IllegalAccessException, AxisFault {
         ArrayList axisServiceList = new ArrayList();
-        for (int i = 0; i < classList.size(); i++) {
+        for (int i = 0, size = classList.size(); i < size; i++) {
             String className = (String) classList.get(i);
             Class pojoClass = Loader.loadClass(classLoader, className);
             WebService wsAnnotation = (WebService) pojoClass.getAnnotation(WebService.class);
@@ -197,17 +204,18 @@
                 }
             }
         }
-        int count = axisServiceList.size();
-        if (count <= 0) {
+        int size = axisServiceList.size();
+        if (size <= 0) {
             return null;
         }
         AxisServiceGroup serviceGroup = new AxisServiceGroup();
         serviceGroup.setServiceGroupName(groupName);
-        for (int i = 0; i < axisServiceList.size(); i++) {
+        for (int i = 0; i < size; i++) {
             AxisService axisService = (AxisService) axisServiceList.get(i);
             serviceGroup.addService(axisService);
         }
         axisConfig.addServiceGroup(serviceGroup);
+        configureAddressing(serviceGroup);
         return serviceGroup;
     }
 
@@ -275,10 +283,10 @@
                     axisOperation.setMessageReceiver(new JAXWSMessageReceiver());
                 }
             }
+            axisService.setElementFormDefault(false);
+            axisService.setFileName(serviceLocation);
+            axisService.setClassLoader(classLoader);
         }
-        axisService.setElementFormDefault(false);
-        axisService.setFileName(serviceLocation);
-        axisService.setClassLoader(classLoader);
         return axisService;
     }
 
@@ -327,6 +335,31 @@
 
     private boolean isEmpty(String string) {
         return (string == null || "".equals(string));
+    }
+    
+    //Store the address URIs that we will need to create endpoint references at runtime.
+    private void configureAddressing(AxisServiceGroup serviceGroup) throws AxisFault {
+        EndpointContextMap map =
+            (EndpointContextMap) configCtx.getProperty(org.apache.axis2.jaxws.Constants.ENDPOINT_CONTEXT_MAP);
+        
+        if (map == null) {
+            map = EndpointContextMapManager.getEndpointContextMap();
+            configCtx.setProperty(org.apache.axis2.jaxws.Constants.ENDPOINT_CONTEXT_MAP, map);
+        }
+        
+        Iterator iterator = serviceGroup.getServices();
+        
+        while (iterator.hasNext()) {
+            AxisService axisService = (AxisService) iterator.next();
+            Parameter param =
+                axisService.getParameter(EndpointDescription.AXIS_SERVICE_PARAMETER);
+            EndpointDescription ed = (EndpointDescription) param.getValue();
+            QName serviceName = ed.getServiceQName();
+            QName portName = ed.getPortQName();
+            EndpointKey key = new EndpointKey(serviceName, portName);
+            
+            map.put(key, axisService.getEPRs()[0]);
+        }
     }
 }
 

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java?rev=636754&r1=636753&r2=636754&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/EndpointController.java Thu Mar 13 06:15:30 2008
@@ -211,7 +211,7 @@
             MessageContext request = eic.getRequestMessageContext();
             
             Class serviceEndpoint = getServiceImplementation(request);
-            EndpointDescription endpointDesc = getEndpointDescription(request, serviceEndpoint);
+            EndpointDescription endpointDesc = getEndpointDescription(request);
             request.setEndpointDescription(endpointDesc);
             
             //  TODO: review: make sure the handlers are set on the InvocationContext
@@ -421,30 +421,21 @@
     }
 
     /*
-    * Gets the ServiceDescription associated with the request that is currently
+    * Gets the EndpointDescription associated with the request that is currently
     * being processed.
     */
-    private EndpointDescription getEndpointDescription(MessageContext mc, Class implClass) {
+    private EndpointDescription getEndpointDescription(MessageContext mc) {
         AxisService axisSvc = mc.getAxisMessageContext().getAxisService();
-
-        //Make sure that a ServiceDescription was created and added to the AxisService
-
         Parameter param = axisSvc.getParameter(EndpointDescription.AXIS_SERVICE_PARAMETER);
-        if (param != null) {
-            EndpointDescription ed = (EndpointDescription)param.getValue();
-            param = axisSvc.getParameter(EndpointContextMap.class.getCanonicalName());
-            if(param != null) {
-                EndpointContextMap map = (EndpointContextMap) param.getValue();
-                EndpointContextMapManager.setEndpointContextMap(map);
-            }
-            
-            return ed;
-        } else {
+        
+        if (param == null) {
         	// If we've made it here, its very likely that although the AxisService was deployed, the 
         	// associated ServiceDescription was not created successfully
             throw ExceptionFactory.makeWebServiceException(Messages.getMessage("endpointDescErr1"));
-
         }
+        
+        EndpointDescription ed = (EndpointDescription) param.getValue();
+        return ed;
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org