Author: alessio.soldano(a)jboss.com
Date: 2011-04-14 11:39:55 -0400 (Thu, 14 Apr 2011)
New Revision: 14098
Modified:
stack/cxf/trunk/
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/api/main/module.xml
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/spi/main/module.xml
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/AbstractInvoker.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFNonSpringServletExt.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFServletExt.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerEJB3.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerJSE.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/ServletControllerExt.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/aspect/BusDeploymentAspect.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/transport/ServletHelper.java
stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-jars-jaxws.xml
stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-samples-jaxws.xml
stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml
Log:
[JBWS-3224][JBWS-3265] Isolate deployment classloader from ws integration
Property changes on: stack/cxf/trunk
___________________________________________________________________
Added: svn:mergeinfo
+ /stack/cxf/branches/asoldano:14032-14050,14068
Modified:
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/api/main/module.xml
===================================================================
---
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/api/main/module.xml 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/api/main/module.xml 2011-04-14
15:39:55 UTC (rev 14098)
@@ -30,6 +30,9 @@
<dependencies>
<module name="javax.api"/>
+ <module name="com.sun.xml.messaging.saaj"
services="export" export="true"/>
+ <module name="javax.xml.ws.api"/>
<module name="org.jboss.logging"/>
+ <module name="org.jboss.modules"/>
</dependencies>
</module>
Modified:
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/spi/main/module.xml
===================================================================
---
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/spi/main/module.xml 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/resources/src/main/resources/modules/org/jboss/ws/spi/main/module.xml 2011-04-14
15:39:55 UTC (rev 14098)
@@ -30,6 +30,7 @@
<dependencies>
<module name="javax.api"/>
+ <module name="javax.servlet.api"/>
<module name="javax.xml.stream.api"/>
<module name="javax.xml.ws.api"/>
<module name="org.jboss.logging"/>
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/AbstractInvoker.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/AbstractInvoker.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/AbstractInvoker.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -73,10 +73,14 @@
import org.apache.cxf.service.Service;
import org.apache.cxf.service.invoker.Invoker;
import org.apache.cxf.service.model.BindingOperationInfo;
+import org.jboss.wsf.spi.SPIProvider;
+import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.wsf.spi.classloading.ClassLoaderProvider;
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.invocation.Invocation;
import org.jboss.wsf.spi.invocation.InvocationContext;
import org.jboss.wsf.spi.invocation.InvocationHandler;
+import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
/**
* An abstract CXF invoker
@@ -91,6 +95,7 @@
{
private static final Object[] NO_ARGS = new Object[]{};
private Object targetBean;
+ private WebServiceContextFactory contextFactory;
public void setTargetBean(Object targetBean)
{
@@ -327,5 +332,16 @@
ctx.put(key.getKey(), key.getValue(), Scope.HANDLER);
}
}
+
+ protected WebServiceContextFactory getWebServiceContextFactory()
+ {
+ if (contextFactory == null)
+ {
+ ClassLoader cl =
ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader();
+ SPIProvider spiProvider = SPIProviderResolver.getInstance(cl).getProvider();
+ contextFactory = spiProvider.getSPI(WebServiceContextFactory.class, cl);
+ }
+ return contextFactory;
+ }
}
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFNonSpringServletExt.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFNonSpringServletExt.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFNonSpringServletExt.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -21,7 +21,10 @@
*/
package org.jboss.wsf.stack.cxf;
+import java.io.IOException;
+
import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -33,6 +36,7 @@
import org.apache.cxf.transport.servlet.ServletController;
import org.apache.cxf.transport.servlet.ServletTransportFactory;
import org.jboss.wsf.spi.deployment.Endpoint;
+import org.jboss.wsf.spi.deployment.ServletDelegate;
import org.jboss.wsf.stack.cxf.configuration.BusHolder;
import org.jboss.wsf.stack.cxf.transport.ServletHelper;
@@ -43,7 +47,7 @@
* @since 16-Jun-2010
*
*/
-public class CXFNonSpringServletExt extends CXFNonSpringServlet
+public class CXFNonSpringServletExt extends CXFNonSpringServlet implements
ServletDelegate
{
protected Endpoint endpoint;
@@ -95,4 +99,46 @@
{
ServletHelper.callPreDestroy(endpoint);
}
+
+ @Override
+ public void doHead(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doHead(request, response);
+ }
+
+ @Override
+ public void doGet(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doGet(request, response);
+ }
+
+ @Override
+ public void doPost(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doPost(request, response);
+ }
+
+ @Override
+ public void doPut(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doPut(request, response);
+ }
+
+ @Override
+ public void doDelete(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doDelete(request, response);
+ }
+
+ @Override
+ public void service(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.service(request, response);
+ }
}
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFServletExt.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFServletExt.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/CXFServletExt.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -21,7 +21,10 @@
*/
package org.jboss.wsf.stack.cxf;
+import java.io.IOException;
+
import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -33,6 +36,7 @@
import org.apache.cxf.transport.servlet.ServletController;
import org.apache.cxf.transport.servlet.ServletTransportFactory;
import org.jboss.wsf.spi.deployment.Endpoint;
+import org.jboss.wsf.spi.deployment.ServletDelegate;
import org.jboss.wsf.stack.cxf.configuration.BusHolder;
import org.jboss.wsf.stack.cxf.transport.ServletHelper;
@@ -44,7 +48,7 @@
*
* @since 21-Apr-2007
*/
-public class CXFServletExt extends CXFServlet
+public class CXFServletExt extends CXFServlet implements ServletDelegate
{
protected Endpoint endpoint;
@@ -95,6 +99,46 @@
{
ServletHelper.callPreDestroy(endpoint);
}
-
+ @Override
+ public void doHead(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doHead(request, response);
+ }
+
+ @Override
+ public void doGet(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doGet(request, response);
+ }
+
+ @Override
+ public void doPost(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doPost(request, response);
+ }
+
+ @Override
+ public void doPut(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doPut(request, response);
+ }
+
+ @Override
+ public void doDelete(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.doDelete(request, response);
+ }
+
+ @Override
+ public void service(HttpServletRequest request, HttpServletResponse response,
ServletContext context)
+ throws ServletException, IOException
+ {
+ this.service(request, response);
+ }
}
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerEJB3.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerEJB3.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerEJB3.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -24,10 +24,7 @@
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
-import org.jboss.wsf.spi.SPIProvider;
-import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.invocation.InvocationType;
-import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
/**
* An XFire invoker for EJB3
@@ -40,8 +37,6 @@
{
protected WebServiceContext getWebServiceContext(MessageContext msgCtx)
{
- SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
- WebServiceContextFactory contextFactory =
spiProvider.getSPI(WebServiceContextFactory.class);
- return contextFactory.newWebServiceContext(InvocationType.JAXWS_EJB3, msgCtx);
+ return
getWebServiceContextFactory().newWebServiceContext(InvocationType.JAXWS_EJB3, msgCtx);
}
}
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerJSE.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerJSE.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/InvokerJSE.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -24,10 +24,7 @@
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
-import org.jboss.wsf.spi.SPIProvider;
-import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.invocation.InvocationType;
-import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
/**
* An CXF invoker for JSE
@@ -40,8 +37,6 @@
{
protected WebServiceContext getWebServiceContext(MessageContext msgCtx)
{
- SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
- WebServiceContextFactory contextFactory =
spiProvider.getSPI(WebServiceContextFactory.class);
- return contextFactory.newWebServiceContext(InvocationType.JAXWS_JSE, msgCtx);
+ return getWebServiceContextFactory().newWebServiceContext(InvocationType.JAXWS_JSE,
msgCtx);
}
}
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/ServletControllerExt.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/ServletControllerExt.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/ServletControllerExt.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -41,6 +41,7 @@
import org.apache.cxf.transports.http.QueryHandlerRegistry;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.wsf.spi.classloading.ClassLoaderProvider;
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.management.EndpointMetrics;
import org.jboss.wsf.spi.management.ServerConfig;
@@ -63,8 +64,9 @@
super(cxfTransport, config, servletCtx, bus);
this.cxfTransport = cxfTransport;
this.bus = bus;
- SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
- serverConfig = spiProvider.getSPI(ServerConfigFactory.class).getServerConfig();
+ ClassLoader cl =
ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader();
+ SPIProvider spiProvider = SPIProviderResolver.getInstance(cl).getProvider();
+ serverConfig = spiProvider.getSPI(ServerConfigFactory.class,
cl).getServerConfig();
}
/**
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/aspect/BusDeploymentAspect.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/aspect/BusDeploymentAspect.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/aspect/BusDeploymentAspect.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -71,8 +71,11 @@
String jbosswsCxfXml = contextParams == null ? null :
contextParams.get(BusHolder.PARAM_CXF_BEANS_URL);
BusHolder holder = null;
- //set the runtime classloader (pointing to the deployment unit) to allow CXF
accessing to the classes
- SecurityActions.setContextClassLoader(dep.getRuntimeClassLoader());
+ //set the runtime classloader (pointing to the deployment unit) to allow CXF
accessing to the classes;
+ //use origClassLoader (which on AS7 is set to ASIL aggregation module's
classloader by TCCLDeploymentProcessClassLoader) as
+ //parent to make sure user provided libs in the deployment do no mess up the WS
endpoint's deploy if they duplicates
+ //libraries already available on the application server modules.
+ SecurityActions.setContextClassLoader(new
DelegateClassLoader(dep.getRuntimeClassLoader(), origClassLoader));
if (jbosswsCxfXml != null) // Spring available
{
URL cxfServletURL = null;
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/transport/ServletHelper.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/transport/ServletHelper.java 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/transport/ServletHelper.java 2011-04-14
15:39:55 UTC (rev 14098)
@@ -45,6 +45,7 @@
import org.jboss.wsf.common.injection.InjectionHelper;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.wsf.spi.classloading.ClassLoaderProvider;
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
import org.jboss.wsf.spi.invocation.EndpointAssociation;
@@ -66,8 +67,9 @@
public static Endpoint initEndpoint(ServletConfig servletConfig, String servletName)
{
- SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
- EndpointRegistry epRegistry =
spiProvider.getSPI(EndpointRegistryFactory.class).getEndpointRegistry();
+ ClassLoader cl =
ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader();
+ SPIProvider spiProvider = SPIProviderResolver.getInstance(cl).getProvider();
+ EndpointRegistry epRegistry = spiProvider.getSPI(EndpointRegistryFactory.class,
cl).getEndpointRegistry();
ServletContext context = servletConfig.getServletContext();
String contextPath = context.getContextPath();
Modified: stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-jars-jaxws.xml
===================================================================
---
stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-jars-jaxws.xml 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-jars-jaxws.xml 2011-04-14
15:39:55 UTC (rev 14098)
@@ -34,6 +34,9 @@
<webinf
dir="${tests.output.dir}/test-resources/jaxws/cxf/aegis/jaxws/WEB-INF/">
<include name="jbossws-cxf.xml"/>
</webinf>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.cxf"/>
+ </manifest>
</war>
<war
@@ -44,6 +47,9 @@
<include
name="org/jboss/test/ws/jaxws/cxf/aegis/AegisAnnotationGroupQueryImpl.class"/>
<include
name="org/jboss/test/ws/jaxws/cxf/aegis/Member.class"/>
</classes>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.cxf"/>
+ </manifest>
</war>
<!-- jaxws-cxf-configuration -->
@@ -58,6 +64,9 @@
<webinf
dir="${tests.output.dir}/test-resources/jaxws/cxf/configuration/WEB-INF">
<include name="jbossws-cxf.xml"/>
</webinf>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.cxf"/>
+ </manifest>
</war>
<!-- jaxws-cxf-descriptor -->
@@ -72,6 +81,9 @@
<webinf
dir="${tests.output.dir}/test-resources/jaxws/cxf/descriptor/WEB-INF">
<include name="jbossws-cxf.xml"/>
</webinf>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.cxf"/>
+ </manifest>
</war>
<!-- jaxws-cxf-interop-wstrust10-client -->
Modified:
stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-samples-jaxws.xml
===================================================================
---
stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-samples-jaxws.xml 2011-04-14
15:36:32 UTC (rev 14097)
+++
stack/cxf/trunk/modules/testsuite/cxf-spring-tests/scripts/cxf-samples-jaxws.xml 2011-04-14
15:39:55 UTC (rev 14098)
@@ -108,6 +108,9 @@
<include name="bob.jks" />
<include name="bob.properties" />
</zipfileset>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.ws.security"/>
+ </manifest>
</war>
<!-- jaxws-samples-wsse-sign-client -->
@@ -135,6 +138,9 @@
<include name="bob.jks" />
<include name="bob.properties" />
</zipfileset>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.ws.security"/>
+ </manifest>
</war>
<!-- jaxws-samples-wsse-sign-encrypt-client -->
@@ -158,6 +164,9 @@
<include name="jbossws-cxf.xml"/>
<include name="wsdl/*"/>
</webinf>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.ws.security"/>
+ </manifest>
</war>
<!-- jaxws-samples-wsse-username-authorize -->
@@ -260,6 +269,9 @@
<include name="bob.jks" />
<include name="bob.properties" />
</zipfileset>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.ws.security"/>
+ </manifest>
</war>
<!-- jaxws-samples-wssePolicy-sign-client -->
@@ -287,6 +299,9 @@
<include name="bob.jks" />
<include name="bob.properties" />
</zipfileset>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.ws.security"/>
+ </manifest>
</war>
<!-- jaxws-samples-wssePolicy-sign-encrypt-client -->
@@ -310,6 +325,9 @@
<include name="jbossws-cxf.xml"/>
<include name="wsdl/*"/>
</webinf>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.ws.security"/>
+ </manifest>
</war>
<!-- Please add alphabetically -->
Modified: stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml
===================================================================
--- stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml 2011-04-14
15:36:32 UTC (rev 14097)
+++ stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml 2011-04-14
15:39:55 UTC (rev 14098)
@@ -84,6 +84,9 @@
<classes dir="${tests.output.dir}/test-classes">
<include
name="org/jboss/test/ws/jaxws/cxf/gzip/HelloWorld*.class"/>
</classes>
+ <manifest>
+ <attribute name="Dependencies"
value="org.apache.cxf"/>
+ </manifest>
</war>
<war warfile="${tests.output.dir}/test-libs/jaxws-cxf-gzip-client.war"
manifest="${tests.output.dir}/test-resources/jaxws/cxf/gzip/META-INF/MANIFEST.MF"