[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