Author: richard.opalka(a)jboss.com
Date: 2009-06-22 10:27:25 -0400 (Mon, 22 Jun 2009)
New Revision: 10213
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebservicesMetaDataDeployer.java
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml
Log:
[JBWS-2689][JBWS-2333][JBWS-2690] fixing issues
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -21,8 +21,13 @@
*/
package org.jboss.wsf.container.jboss50.deployer;
+import java.util.ArrayList;
import java.util.List;
+import javax.jws.WebService;
+import javax.servlet.Servlet;
+import javax.xml.ws.WebServiceProvider;
+
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.metadata.javaee.spec.ParamValueMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
@@ -62,4 +67,60 @@
}
return endpointClass;
}
+
+ protected final List<ServletMetaData> getRelevantJAXWSServlets(JBossWebMetaData
webMetaData, ClassLoader loader)
+ {
+ return getRelevantServlets( webMetaData, loader, true );
+ }
+
+ protected final List<ServletMetaData> getRelevantJAXRPCServlets(JBossWebMetaData
webMetaData, ClassLoader loader)
+ {
+ return getRelevantServlets( webMetaData, loader, false );
+ }
+
+ private final List<ServletMetaData> getRelevantServlets(JBossWebMetaData
webMetaData, ClassLoader loader, boolean jaxws)
+ {
+ List<ServletMetaData> endpoints = new ArrayList<ServletMetaData>();
+ for (ServletMetaData servlet : webMetaData.getServlets())
+ {
+ String servletClassName = getTargetBean(servlet);
+
+ // Skip JSPs
+ if (servletClassName == null || servletClassName.length() == 0)
+ continue;
+
+ try
+ {
+ Class<?> servletClass = loader.loadClass(servletClassName.trim());
+ boolean isServlet = servletClass.isAssignableFrom(Servlet.class);
+ if (false == isServlet)
+ {
+ boolean isWebService =
servletClass.isAnnotationPresent(WebService.class);
+ boolean isWebServiceProvider =
servletClass.isAnnotationPresent(WebServiceProvider.class);
+ if ( jaxws )
+ {
+ if (isWebService || isWebServiceProvider)
+ {
+ endpoints.add(servlet); // jaxws endpoint
+ }
+ }
+ else
+ {
+ if (!isWebService && !isWebServiceProvider)
+ {
+ endpoints.add(servlet); // jaxrpc endpoint
+ }
+ }
+ }
+ }
+ catch (ClassNotFoundException ex)
+ {
+ log.warn("Cannot load servlet class: " + servletClassName);
+ continue;
+ }
+ }
+
+ return endpoints;
+ }
+
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -111,39 +111,7 @@
*/
protected WebservicesMetaData getWebservicesMetaData(DeploymentUnit unit)
{
- WebservicesMetaData wsMetaData = unit.getAttachment(WebservicesMetaData.class);
- UnifiedVirtualFile vfWebservices = getWebservicesFile(unit);
- if (wsMetaData == null && vfWebservices != null)
- {
- try
- {
- URL wsURL = vfWebservices.toURL();
- Element root = DOMUtils.parse(wsURL.openStream());
- String namespaceURI = root.getNamespaceURI();
- if (
namespaceURI.equals("http://java.sun.com/xml/ns/j2ee"))
- {
- Unmarshaller unmarshaller =
UnmarshallerFactory.newInstance().newUnmarshaller();
- ObjectModelFactory factory = new WebservicesFactory(wsURL);
- wsMetaData =
(WebservicesMetaData)unmarshaller.unmarshal(wsURL.openStream(), factory, null);
- unit.addAttachment(WebservicesMetaData.class, wsMetaData);
- }
- }
- catch (Exception ex)
- {
- throw new WSFDeploymentException(ex);
- }
- }
- return wsMetaData;
+ return unit.getAttachment(WebservicesMetaData.class);
}
- private UnifiedVirtualFile getWebservicesFile(DeploymentUnit unit)
- {
- UnifiedVirtualFile wsFile = null;
- if (unit instanceof VFSDeploymentUnit)
- {
- VirtualFile vf =
((VFSDeploymentUnit)unit).getMetaDataFile("webservices.xml");
- wsFile = vf != null ? new VirtualFileAdaptor(vf) : null;
- }
- return wsFile;
- }
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -21,6 +21,8 @@
*/
package org.jboss.wsf.container.jboss50.deployer;
+import java.util.List;
+
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.metadata.serviceref.VirtualFileAdaptor;
@@ -117,6 +119,23 @@
return false;
WebservicesMetaData wsMetaData = getWebservicesMetaData(unit);
- return wsMetaData != null;
+ if ( wsMetaData == null )
+ {
+ return false;
+ }
+
+ boolean isWebServiceDeployment = false;
+ try
+ {
+ JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
+ List<ServletMetaData> servlets = getRelevantJAXRPCServlets(webMetaData,
unit.getClassLoader());
+ isWebServiceDeployment = servlets.size() > 0;
+ }
+ catch (Exception ex)
+ {
+ log.error("Cannot process web deployment", ex);
+ }
+
+ return isWebServiceDeployment;
}
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -69,7 +69,7 @@
// Copy the attachments
dep.addAttachment(JBossWebMetaData.class, webMetaData);
- List<ServletMetaData> servlets = getRelevantServlets(webMetaData,
unit.getClassLoader());
+ List<ServletMetaData> servlets = getRelevantJAXWSServlets(webMetaData,
unit.getClassLoader());
for (ServletMetaData servlet : servlets)
{
String servletName = servlet.getName();
@@ -94,7 +94,7 @@
try
{
JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
- List<ServletMetaData> servlets = getRelevantServlets(webMetaData,
unit.getClassLoader());
+ List<ServletMetaData> servlets = getRelevantJAXWSServlets(webMetaData,
unit.getClassLoader());
isWebServiceDeployment = servlets.size() > 0;
}
catch (Exception ex)
@@ -105,31 +105,4 @@
return isWebServiceDeployment;
}
- private List<ServletMetaData> getRelevantServlets(JBossWebMetaData webMetaData,
ClassLoader loader)
- {
- List<ServletMetaData> servlets = new ArrayList<ServletMetaData>();
- for (ServletMetaData servlet : webMetaData.getServlets())
- {
- String servletClassName = getTargetBean(servlet);
-
- // 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;
- }
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -42,6 +42,7 @@
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
/**
* This it the web service deployer for EJB. Adopts EJB deployments to
@@ -64,6 +65,8 @@
addInput(EjbDeployment.class);
addInput(Ejb3Deployment.class);
+
+ addInput(WebservicesMetaData.class);
// Input for the TomcatDeployer
addOutput(JBossWebMetaData.class);
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -22,6 +22,7 @@
package org.jboss.wsf.container.jboss50.deployer;
import org.jboss.web.deployers.WarDeployment;
+import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
/**
* @author Heiko.Braun(a)jboss.com
@@ -32,5 +33,6 @@
{
// Output from the TomcatDeployer
addInput(WarDeployment.class);
+ addInput(WebservicesMetaData.class);
}
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -22,6 +22,7 @@
package org.jboss.wsf.container.jboss50.deployer;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
/**
* This is the web service deployer for JSE
@@ -36,6 +37,7 @@
public WebServiceDeployerPreJSE()
{
addInput(JBossWebMetaData.class);
+ addInput(WebservicesMetaData.class);
addOutput(JBossWebMetaData.class);
}
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebservicesMetaDataDeployer.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebservicesMetaDataDeployer.java
(rev 0)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebservicesMetaDataDeployer.java 2009-06-22
14:27:25 UTC (rev 10213)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.container.jboss50.deployer;
+
+import org.jboss.deployers.vfs.spi.deployer.ObjectModelFactoryDeployer;
+import org.jboss.wsf.spi.metadata.webservices.WebservicesFactory;
+import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
+import org.jboss.xb.binding.ObjectModelFactory;
+
+/**
+ * webservices.xml deployer.
+ *
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
+ */
+public final class WebservicesMetaDataDeployer
+extends ObjectModelFactoryDeployer< WebservicesMetaData >
+{
+
+ /**
+ * Constructor.
+ */
+ public WebservicesMetaDataDeployer()
+ {
+ super(WebservicesMetaData.class);
+ }
+
+ /**
+ * Model factory generator.
+ */
+ @Override
+ protected ObjectModelFactory getObjectModelFactory( final WebservicesMetaData root )
+ {
+ return new WebservicesFactory( null );
+ }
+
+}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml 2009-06-22
12:48:53 UTC (rev 10212)
+++
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml 2009-06-22
14:27:25 UTC (rev 10213)
@@ -75,6 +75,14 @@
Finally, each Endpoint is registered with the EndpointRegistry.
*********************************************************************************************************************
-->
+
+ <!--
+ A deployer that processes webservices.xml file
+ -->
+ <bean name="WebservicesMetaDataDeployer"
class="org.jboss.wsf.container.jboss50.deployer.WebservicesMetaDataDeployer">
+ <property name="name">webservices.xml</property>
+ <property name="useSchemaValidation">true</property>
+ </bean>
<!--
A web service deployer that hooks in after the EJB deployers