[jbossws-commits] JBossWS SVN: r8367 - in stack/native/trunk/modules/core: src/main/java/org/jboss/wsf/stack/jbws and 1 other directory.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Tue Oct 7 05:43:49 EDT 2008


Author: richard.opalka at jboss.com
Date: 2008-10-07 05:43:48 -0400 (Tue, 07 Oct 2008)
New Revision: 8367

Added:
   stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/ServletConfigHelper.java
Modified:
   stack/native/trunk/modules/core/pom.xml
   stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/AspectizedEndpointServlet.java
   stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/EndpointServlet.java
Log:
[JBWS-2246][JBWS-2264][JBAS-5732] refactoring endpoint servlets

Modified: stack/native/trunk/modules/core/pom.xml
===================================================================
--- stack/native/trunk/modules/core/pom.xml	2008-10-07 09:29:52 UTC (rev 8366)
+++ stack/native/trunk/modules/core/pom.xml	2008-10-07 09:43:48 UTC (rev 8367)
@@ -31,6 +31,10 @@
       <artifactId>jbossws-spi</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.jboss.ws</groupId>
+      <artifactId>jbossws-framework</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.jboss.ws.native</groupId>
       <artifactId>jbossws-native-jaxws-ext</artifactId>
       <version>${version}</version>

Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/AspectizedEndpointServlet.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/AspectizedEndpointServlet.java	2008-10-07 09:29:52 UTC (rev 8366)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/AspectizedEndpointServlet.java	2008-10-07 09:43:48 UTC (rev 8367)
@@ -21,47 +21,38 @@
  */
 package org.jboss.wsf.stack.jbws;
 
-import org.jboss.wsf.spi.DeploymentAspectManagerLocator;
-import org.jboss.wsf.spi.SPIProvider;
-import org.jboss.wsf.spi.SPIProviderResolver;
-import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.deployment.DeploymentAspectManager;
+import javax.servlet.ServletConfig;
 
+import org.jboss.wsf.framework.deployment.AbstractAspectizedEndpointServlet;
+import org.jboss.wsf.spi.management.EndpointResolver;
+
 /**
- * Endpoint servlet with WS framework aspects support called on servlet lifecycle methods
+ * An aspectized Native endpoint servlet that is installed for every web service endpoint on AS 5.x series
  * @author richard.opalka at jboss.com
  */
-public class AspectizedEndpointServlet extends EndpointServlet
+public final class AspectizedEndpointServlet extends AbstractAspectizedEndpointServlet
 {
 
-   protected DeploymentAspectManager aspectsManager;
-
-   protected void initDeploymentAspectManager()
+   /**
+    * Provides Native specific endpoint resolver
+    * @param servletContext servlet context
+    * @param servletName servlet name
+    * @return new Native specific endpoint resolver
+    */
+   @Override
+   protected final EndpointResolver newEndpointResolver(String servletContext, String servletName)
    {
-      SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
-      DeploymentAspectManagerLocator locator = spiProvider.getSPI(DeploymentAspectManagerLocator.class);
-      aspectsManager = locator.locateDeploymentAspectManager("WSServletAspectManager");
+      return new WebAppResolver(servletContext, servletName);
    }
-   
-   protected void callRuntimeAspects()
+
+   /**
+    * Post init phase hook using template method
+    * @param servletConfig servlet config
+    */
+   @Override
+   protected final void postInit(ServletConfig servletConfig)
    {
-      Deployment dep = endpoint.getService().getDeployment();
-      aspectsManager.create(dep, null);
-      aspectsManager.start(dep, null);
+      ServletConfigHelper.initEndpointConfig(servletConfig, endpoint);
    }
-   
-   public void destroy()
-   {
-      try
-      {
-         Deployment dep = endpoint.getService().getDeployment();
-         aspectsManager.stop(dep, null);
-         aspectsManager.destroy(dep, null);
-      }
-      finally
-      {
-         super.destroy();
-      }
-   }
-   
+
 }

Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/EndpointServlet.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/EndpointServlet.java	2008-10-07 09:29:52 UTC (rev 8366)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/EndpointServlet.java	2008-10-07 09:43:48 UTC (rev 8367)
@@ -21,138 +21,40 @@
  */
 package org.jboss.wsf.stack.jbws;
 
-import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
-import org.jboss.wsf.common.ObjectNameFactory;
-import org.jboss.wsf.spi.invocation.EndpointAssociation;
-import org.jboss.wsf.spi.SPIProvider;
-import org.jboss.wsf.spi.SPIProviderResolver;
-import org.jboss.wsf.spi.invocation.RequestHandler;
-import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.deployment.Endpoint;
-import org.jboss.wsf.spi.management.EndpointRegistry;
-import org.jboss.wsf.spi.management.EndpointRegistryFactory;
+import org.jboss.wsf.framework.deployment.AbstractEndpointServlet;
+import org.jboss.wsf.spi.management.EndpointResolver;
 
-import javax.management.ObjectName;
 import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.ws.WebServiceException;
-import java.io.IOException;
 
 /**
- * A servlet that is installed for every web service endpoint.
+ * A Native endpoint servlet that is installed for every web service endpoint on AS 4.2.x series
+ * @author thomas.diesler at jboss.com
+ * @author heiko.braun at jboss.com
  * @author richard.opalka at jboss.com
- * @author Thomas.Diesler at jboss.org
  */
-public class EndpointServlet extends HttpServlet
+public final class EndpointServlet extends AbstractEndpointServlet
 {
-   // provide logging
-   private static final Logger log = Logger.getLogger(EndpointServlet.class);
-
-   protected Endpoint endpoint;
-   protected EndpointRegistry epRegistry;
-
-   public void init(ServletConfig servletConfig) throws ServletException
-   {
-      super.init(servletConfig);
-      this.initRegistry();
-      this.initDeploymentAspectManager();
-      String contextPath = servletConfig.getServletContext().getContextPath();
-      this.initServiceEndpoint(contextPath);
-   }
    
-   protected void initRegistry()
-   {
-      SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
-      epRegistry = spiProvider.getSPI(EndpointRegistryFactory.class).getEndpointRegistry();
-   }
-   
-   public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
-   {
-      try
-      {
-         EndpointAssociation.setEndpoint(endpoint);
-         RequestHandler requestHandler = endpoint.getRequestHandler();
-         requestHandler.handleHttpRequest(endpoint, req, res, getServletContext());
-      }
-      finally
-      {
-         EndpointAssociation.removeEndpoint();
-      }
-   }
-
-   /** Initialize the service endpoint
+   /**
+    * Provides Native specific endpoint resolver
+    * @param servletContext servlet context
+    * @param servletName servlet name
+    * @return new Native specific endpoint resolver
     */
-   protected void initServiceEndpoint(String contextPath)
+   @Override
+   protected final EndpointResolver newEndpointResolver(String contextPath, String servletName)
    {
-      this.initEndpoint(contextPath, getServletName());
-      this.setRuntimeLoader();
-      this.callRuntimeAspects();
-      this.initEndpointConfig();
+      return new WebAppResolver(contextPath, servletName);
    }
-   
-   private void setRuntimeLoader()
-   {
-      // Set the runtime classloader for JSE endpoints, this should be the tomcat classloader
-      Deployment dep = endpoint.getService().getDeployment();
-      if (dep.getType() == Deployment.DeploymentType.JAXRPC_JSE || dep.getType() == Deployment.DeploymentType.JAXWS_JSE)
-      {
-         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-         dep.setRuntimeClassLoader(classLoader);
-      }
-   }
 
-   private void initEndpointConfig()
-   {
-      // read the config name/file from web.xml
-      ServletContext ctx = getServletContext();
-      String configName = ctx.getInitParameter("jbossws-config-name");
-      String configFile = ctx.getInitParameter("jbossws-config-file");
-      if (configName != null || configFile != null)
-      {
-         ServerEndpointMetaData epMetaData = endpoint.getAttachment(ServerEndpointMetaData.class);
-         if (epMetaData == null)
-            throw new IllegalStateException("Cannot obtain endpoint meta data");
-
-         log.debug("Updating service endpoint config\n  config-name: " + configName + "\n  config-file: " + configFile);
-         epMetaData.setConfigName(configName, configFile);
-      }
-   }
-
-   private void initEndpoint(String contextPath, String servletName)
-   {
-      WebAppResolver resolver = new WebAppResolver(contextPath, servletName);
-      this.endpoint = epRegistry.resolve(resolver);
-
-      if (this.endpoint == null)
-      {
-         ObjectName oname = ObjectNameFactory.create(Endpoint.SEPID_DOMAIN + ":" +
-           Endpoint.SEPID_PROPERTY_CONTEXT + "=" + contextPath + "," +
-           Endpoint.SEPID_PROPERTY_ENDPOINT + "=" + getServletName()
-         );
-         throw new WebServiceException("Cannot obtain endpoint for: " + oname);
-      }
-
-   }
-
    /**
-    * Template method
+    * Post init phase hook using template method
+    * @param servletConfig servlet config
     */
-   protected void initDeploymentAspectManager()
+   @Override
+   protected final void postInit(ServletConfig servletConfig)
    {
-      // does nothing (because of BC)
+      ServletConfigHelper.initEndpointConfig(servletConfig, endpoint);
    }
-   
-   /**
-    * Template method
-    */
-   protected void callRuntimeAspects()
-   {
-      // does nothing (because of BC)
-   }
-   
+
 }

Added: stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/ServletConfigHelper.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/ServletConfigHelper.java	                        (rev 0)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/wsf/stack/jbws/ServletConfigHelper.java	2008-10-07 09:43:48 UTC (rev 8367)
@@ -0,0 +1,63 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.wsf.stack.jbws;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+
+import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
+import org.jboss.wsf.spi.deployment.Endpoint;
+
+/**
+ * Native servlet configuration helper
+ * @author richard.opalka at jboss.com
+ */
+public final class ServletConfigHelper
+{
+   
+   /**
+    * Constructor
+    */
+   private ServletConfigHelper() {}
+   
+   /**
+    * Reads the config name/file from web.xml
+    * @param servletConfig servlet config
+    * @param endpoint endpoint instance
+    */
+   public static void initEndpointConfig(ServletConfig servletConfig, Endpoint endpoint)
+   {
+      final ServletContext servletContext = servletConfig.getServletContext();
+      final String configName = servletContext.getInitParameter("jbossws-config-name");
+      final String configFile = servletContext.getInitParameter("jbossws-config-file");
+
+      if (configName != null || configFile != null)
+      {
+         ServerEndpointMetaData epMetaData = endpoint.getAttachment(ServerEndpointMetaData.class);
+         if (epMetaData == null)
+            throw new IllegalStateException("Cannot obtain endpoint meta data");
+
+         epMetaData.setConfigName(configName, configFile);
+      }
+   }
+
+}




More information about the jbossws-commits mailing list