[jboss-cvs] JBossAS SVN: r66532 - in trunk/webservices/src: resources/jbossws-jboss50.deployer/META-INF and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Oct 29 10:34:32 EDT 2007


Author: thomas.diesler at jboss.com
Date: 2007-10-29 10:34:32 -0400 (Mon, 29 Oct 2007)
New Revision: 66532

Added:
   trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookPreJSE.java
Removed:
   trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookJSE.java
Modified:
   trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractDeployerHookJSE.java
   trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXRPCDeployerHookPreJSE.java
   trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ModifyWebMetaDataDeploymentAspect.java
   trunk/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-beans.xml
Log:
[JBWS-124] Redeployment of an unpackaged war causes a NoSuchMethodException at runtime

Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractDeployerHookJSE.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractDeployerHookJSE.java	2007-10-29 14:06:09 UTC (rev 66531)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractDeployerHookJSE.java	2007-10-29 14:34:32 UTC (rev 66532)
@@ -21,11 +21,16 @@
  */
 package org.jboss.wsf.container.jboss50;
 
+//$Id: AbstractDeployerHookJSE.java 3772 2007-07-01 19:29:13Z thomas.diesler at jboss.com $
+
+import java.util.List;
+
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.wsf.spi.deployment.Endpoint;
 
-//$Id: AbstractDeployerHookJSE.java 3772 2007-07-01 19:29:13Z thomas.diesler at jboss.com $
-
 /**
  * An abstract deployer for JSE Endpoints
  *
@@ -36,9 +41,24 @@
 {
    public boolean isWebServiceDeployment(DeploymentUnit unit)
    {
-      if (unit.getAttachment(JBossWebMetaData.class) == null)
-         return false;
+      return unit.getAttachment(JBossWebMetaData.class) != null;
+   }
 
-      return true;
+   protected String getTargetBean(ServletMetaData servlet)
+   {
+      String endpointClass = servlet.getServletClass();
+      List<ParamValueMetaData> initParams = servlet.getInitParam();
+      if (initParams != null)
+      {
+         for (ParamValueMetaData param : initParams)
+         {
+            if (Endpoint.SEPID_DOMAIN_ENDPOINT.equals(param.getParamName()))
+            {
+               endpointClass = param.getParamValue();
+               break;
+            }
+         }
+      }
+      return endpointClass;
    }
 }

Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXRPCDeployerHookPreJSE.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXRPCDeployerHookPreJSE.java	2007-10-29 14:06:09 UTC (rev 66531)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXRPCDeployerHookPreJSE.java	2007-10-29 14:34:32 UTC (rev 66532)
@@ -25,15 +25,15 @@
 
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.metadata.serviceref.VirtualFileAdaptor;
 import org.jboss.metadata.web.jboss.JBossServletMetaData;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
 import org.jboss.metadata.web.spec.ServletMetaData;
-import org.jboss.metadata.serviceref.VirtualFileAdaptor;
+import org.jboss.wsf.spi.deployment.ArchiveDeployment;
 import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
-import org.jboss.wsf.spi.deployment.ArchiveDeployment;
 import org.jboss.wsf.spi.deployment.Endpoint;
 import org.jboss.wsf.spi.deployment.Service;
+import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
 import org.jboss.wsf.spi.metadata.webservices.PortComponentMetaData;
 import org.jboss.wsf.spi.metadata.webservices.WebserviceDescriptionMetaData;
 import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
@@ -87,10 +87,10 @@
                throw new IllegalStateException("servlet-link cannot be null");
 
             ServletMetaData servlet = getServletForName(webMetaData, servletLink);
-            String servletClass = servlet.getServletClass();
+            String targetBean = getTargetBean(servlet);
 
             // Create the endpoint
-            Endpoint ep = newEndpoint(servletClass);
+            Endpoint ep = newEndpoint(targetBean);
             ep.setShortName(servletLink);
             service.addEndpoint(ep);
          }

Deleted: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookJSE.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookJSE.java	2007-10-29 14:06:09 UTC (rev 66531)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookJSE.java	2007-10-29 14:34:32 UTC (rev 66532)
@@ -1,136 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt 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.container.jboss50;
-
-//$Id: JAXWSDeployerHookJSE.java 4239 2007-08-07 19:13:42Z heiko.braun at jboss.com $
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.metadata.web.spec.ServletMetaData;
-import org.jboss.metadata.serviceref.VirtualFileAdaptor;
-import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
-import org.jboss.wsf.spi.deployment.ArchiveDeployment;
-import org.jboss.wsf.spi.deployment.Endpoint;
-import org.jboss.wsf.spi.deployment.Service;
-
-import javax.jws.WebService;
-import javax.xml.ws.WebServiceProvider;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A deployer JAXWS JSE Endpoints
- *
- * @author Thomas.Diesler at jboss.org
- * @since 25-Apr-2007
- */
-public class JAXWSDeployerHookJSE extends AbstractDeployerHookJSE
-{
-   /** Get the deployment type this deployer can handle
-    */
-   public DeploymentType getDeploymentType()
-   {
-      return DeploymentType.JAXWS_JSE;
-   }
-
-   @Override
-   public Deployment createDeployment(DeploymentUnit unit)
-   {
-      ArchiveDeployment dep = newDeployment(unit);
-      dep.setRootFile(new VirtualFileAdaptor(((VFSDeploymentUnit)unit).getRoot()));     
-      dep.setType(getDeploymentType());
-
-      Service service = dep.getService();
-
-      JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
-      if (webMetaData == null)
-         throw new IllegalStateException("Deployment unit does not contain web meta data");
-
-      // Copy the attachments
-      dep.addAttachment(JBossWebMetaData.class, webMetaData);
-
-      List<ServletMetaData> servlets = getRelevantServletMetaDatas(webMetaData, unit.getClassLoader());
-      for (ServletMetaData servlet : servlets)
-      {
-         String servletName = servlet.getName();
-         String servletClass = servlet.getServletClass();
-
-         // Create the endpoint
-         Endpoint ep = newEndpoint(servletClass);
-         ep.setShortName(servletName);
-         service.addEndpoint(ep);
-      }
-
-      return dep;
-   }
-
-   @Override
-   public boolean isWebServiceDeployment(DeploymentUnit unit)
-   {
-      if (super.isWebServiceDeployment(unit) == false)
-         return false;
-
-      boolean isWebServiceDeployment = false;
-      try
-      {
-         JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
-         List<ServletMetaData> servlets = getRelevantServletMetaDatas(webMetaData, unit.getClassLoader());
-         isWebServiceDeployment = servlets.size() > 0;
-      }
-      catch (Exception ex)
-      {
-         log.error("Cannot process web deployment", ex);
-      }
-
-      return isWebServiceDeployment;
-   }
-
-   private List<ServletMetaData> getRelevantServletMetaDatas(JBossWebMetaData webMetaData, ClassLoader loader)
-   {
-      List<ServletMetaData> servlets = new ArrayList<ServletMetaData>();
-      for (ServletMetaData servlet : webMetaData.getServlets())
-      {
-         String servletClassName = servlet.getServletClass();
-
-         // Skip JSPs
-         if (servletClassName == null || servletClassName.length() == 0)
-            continue;
-
-         try
-         {
-            Class<?> servletClass = loader.loadClass(servletClassName.trim());
-            boolean isWebService = servletClass.isAnnotationPresent(WebService.class);
-            boolean isWebServiceProvider = servletClass.isAnnotationPresent(WebServiceProvider.class);
-            if (isWebService || isWebServiceProvider)
-               servlets.add(servlet);
-         }
-         catch (ClassNotFoundException ex)
-         {
-            log.warn("Cannot load servlet class: " + servletClassName);
-            continue;
-         }
-      }
-      return servlets;
-   }
-}
\ No newline at end of file

Copied: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookPreJSE.java (from rev 66526, trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookJSE.java)
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookPreJSE.java	                        (rev 0)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookPreJSE.java	2007-10-29 14:34:32 UTC (rev 66532)
@@ -0,0 +1,136 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.container.jboss50;
+
+//$Id: JAXWSDeployerHookJSE.java 4239 2007-08-07 19:13:42Z heiko.braun at jboss.com $
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.metadata.serviceref.VirtualFileAdaptor;
+import org.jboss.wsf.spi.deployment.Deployment;
+import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
+import org.jboss.wsf.spi.deployment.ArchiveDeployment;
+import org.jboss.wsf.spi.deployment.Endpoint;
+import org.jboss.wsf.spi.deployment.Service;
+
+import javax.jws.WebService;
+import javax.xml.ws.WebServiceProvider;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A deployer JAXWS JSE Endpoints
+ *
+ * @author Thomas.Diesler at jboss.org
+ * @since 25-Apr-2007
+ */
+public class JAXWSDeployerHookPreJSE extends AbstractDeployerHookJSE
+{
+   /** Get the deployment type this deployer can handle
+    */
+   public DeploymentType getDeploymentType()
+   {
+      return DeploymentType.JAXWS_JSE;
+   }
+
+   @Override
+   public Deployment createDeployment(DeploymentUnit unit)
+   {
+      ArchiveDeployment dep = newDeployment(unit);
+      dep.setRootFile(new VirtualFileAdaptor(((VFSDeploymentUnit)unit).getRoot()));     
+      dep.setType(getDeploymentType());
+
+      Service service = dep.getService();
+
+      JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
+      if (webMetaData == null)
+         throw new IllegalStateException("Deployment unit does not contain web meta data");
+
+      // Copy the attachments
+      dep.addAttachment(JBossWebMetaData.class, webMetaData);
+
+      List<ServletMetaData> servlets = getRelevantServletMetaDatas(webMetaData, unit.getClassLoader());
+      for (ServletMetaData servlet : servlets)
+      {
+         String servletName = servlet.getName();
+         String targetBean = getTargetBean(servlet);
+
+         // Create the endpoint
+         Endpoint ep = newEndpoint(targetBean);
+         ep.setShortName(servletName);
+         service.addEndpoint(ep);
+      }
+
+      return dep;
+   }
+
+   @Override
+   public boolean isWebServiceDeployment(DeploymentUnit unit)
+   {
+      if (super.isWebServiceDeployment(unit) == false)
+         return false;
+
+      boolean isWebServiceDeployment = false;
+      try
+      {
+         JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
+         List<ServletMetaData> servlets = getRelevantServletMetaDatas(webMetaData, unit.getClassLoader());
+         isWebServiceDeployment = servlets.size() > 0;
+      }
+      catch (Exception ex)
+      {
+         log.error("Cannot process web deployment", ex);
+      }
+
+      return isWebServiceDeployment;
+   }
+
+   private List<ServletMetaData> getRelevantServletMetaDatas(JBossWebMetaData webMetaData, ClassLoader loader)
+   {
+      List<ServletMetaData> servlets = new ArrayList<ServletMetaData>();
+      for (ServletMetaData servlet : webMetaData.getServlets())
+      {
+         String servletClassName = servlet.getServletClass();
+
+         // Skip JSPs
+         if (servletClassName == null || servletClassName.length() == 0)
+            continue;
+
+         try
+         {
+            Class<?> servletClass = loader.loadClass(servletClassName.trim());
+            boolean isWebService = servletClass.isAnnotationPresent(WebService.class);
+            boolean isWebServiceProvider = servletClass.isAnnotationPresent(WebServiceProvider.class);
+            if (isWebService || isWebServiceProvider)
+               servlets.add(servlet);
+         }
+         catch (ClassNotFoundException ex)
+         {
+            log.warn("Cannot load servlet class: " + servletClassName);
+            continue;
+         }
+      }
+      return servlets;
+   }
+}
\ No newline at end of file

Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ModifyWebMetaDataDeploymentAspect.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ModifyWebMetaDataDeploymentAspect.java	2007-10-29 14:06:09 UTC (rev 66531)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ModifyWebMetaDataDeploymentAspect.java	2007-10-29 14:34:32 UTC (rev 66532)
@@ -71,22 +71,22 @@
       {
          for (ServletMetaData servlet : webMetaData.getServlets())
          {
-            String orgServletClass = servlet.getServletClass();
+            String endpointClass = servlet.getServletClass();
 
             // JSP
-            if (orgServletClass == null || orgServletClass.length() == 0)
+            if (endpointClass == null || endpointClass.length() == 0)
             {
-               log.debug("Ignore servlet class: " + orgServletClass);
+               log.debug("Ignore servlet class: " + endpointClass);
                continue;
             }
 
             // Nothing to do if we have an <init-param>
-            if (!isAlreadyModified(servlet) && !isJavaxServlet(orgServletClass, dep.getInitialClassLoader()))
+            if (!isAlreadyModified(servlet) && !isJavaxServlet(endpointClass, dep.getInitialClassLoader()))
             {
                servlet.setServletClass(servletClass);
                ParamValueMetaData initParam = new ParamValueMetaData();
                initParam.setParamName(Endpoint.SEPID_DOMAIN_ENDPOINT);
-               initParam.setParamValue(orgServletClass);
+               initParam.setParamValue(endpointClass);
                List<ParamValueMetaData> initParams = servlet.getInitParam();
                if (initParams == null)
                {

Modified: trunk/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-beans.xml
===================================================================
--- trunk/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-beans.xml	2007-10-29 14:06:09 UTC (rev 66531)
+++ trunk/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-beans.xml	2007-10-29 14:34:32 UTC (rev 66532)
@@ -134,7 +134,7 @@
   </bean>
 
   <!-- Phase 1 of JSE JAX-WS-->
-  <bean name="WSDeployerHook_JAXWS_PRE_JSE" class="org.jboss.wsf.container.jboss50.JAXWSDeployerHookJSE">
+  <bean name="WSDeployerHook_JAXWS_PRE_JSE" class="org.jboss.wsf.container.jboss50.JAXWSDeployerHookPreJSE">
     <property name="deploymentManagerName">WSDeploymentAspectManagerPreJSE</property>
     <install bean="WebServiceDeployerPreJSE" method="addDeployerHook">
       <parameter>




More information about the jboss-cvs-commits mailing list