Author: rfeng
Date: Mon Apr 13 19:25:51 2009
New Revision: 764571
URL: http://svn.apache.org/viewvc?rev=764571&view=rev
Log:
Add exclusion of axis2-adb to avoid split packages
Add TCCL to work around XMLInputFactory.newInstance call made by Axis2 which is
not OSGi-friendly
Modified:
tuscany/java/sca/modules/binding-ws-axis2/pom.xml
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
Modified: tuscany/java/sca/modules/binding-ws-axis2/pom.xml
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/pom.xml?rev=764571&r1=764570&r2=764571&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-axis2/pom.xml (original)
+++ tuscany/java/sca/modules/binding-ws-axis2/pom.xml Mon Apr 13 19:25:51 2009
@@ -178,6 +178,10 @@
<scope>runtime</scope>
<exclusions>
<exclusion>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-adb</artifactId>
+ </exclusion>
+ <exclusion>
<groupId>stax</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
Modified:
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java?rev=764571&r1=764570&r2=764571&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
Mon Apr 13 19:25:51 2009
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.sca.binding.ws.axis2;
+import javax.xml.stream.XMLInputFactory;
+
import org.apache.axiom.om.OMElement;
import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
@@ -58,7 +60,9 @@
InterfaceContract contract = wsBinding.getBindingInterfaceContract();
contract.getInterface().resetDataBinding(OMElement.class.getName());
- axisProvider = new Axis2ServiceProvider(component, service, wsBinding,
servletHost, messageFactory);
+ // Pass in the XMLInputFactory to work around the Axis2 way of loading
XMLInputFactory
+ XMLInputFactory inputFactory =
modelFactories.getFactory(XMLInputFactory.class);
+ axisProvider = new Axis2ServiceProvider(component, service, wsBinding,
servletHost, messageFactory, inputFactory);
}
public void start() {
Modified:
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=764571&r1=764570&r2=764571&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
Mon Apr 13 19:25:51 2009
@@ -43,6 +43,7 @@
import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.extensions.soap12.SOAP12Address;
import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
@@ -161,7 +162,8 @@
AbstractContract contract,
WebServiceBinding wsBinding,
ServletHost servletHost,
- MessageFactory messageFactory) {
+ MessageFactory messageFactory,
+ final XMLInputFactory xmlInputFactory) {
this.component = component;
this.contract = contract;
@@ -174,20 +176,27 @@
// TuscanyAxisConfigurator tuscanyAxisConfigurator = new
TuscanyAxisConfigurator();
// Allow privileged access to read properties. Requires
PropertyPermission read in
// security policy.
- TuscanyAxisConfigurator tuscanyAxisConfigurator =
- AccessController.doPrivileged(new
PrivilegedExceptionAction<TuscanyAxisConfigurator>() {
- public TuscanyAxisConfigurator run() throws AxisFault {
- return new TuscanyAxisConfigurator(isRampartRequired);
+ configContext = AccessController.doPrivileged(new
PrivilegedExceptionAction<ConfigurationContext>() {
+ public ConfigurationContext run() throws AxisFault {
+ ClassLoader newTccl =
xmlInputFactory.getClass().getClassLoader();
+ ClassLoader tccl =
Thread.currentThread().getContextClassLoader();
+ if (newTccl != null && newTccl != tccl) {
+ Thread.currentThread().setContextClassLoader(newTccl);
}
- });
- configContext = tuscanyAxisConfigurator.getConfigurationContext();
+ try {
+ return new
TuscanyAxisConfigurator(isRampartRequired).getConfigurationContext();
+ } finally {
+ if (newTccl != null && newTccl != tccl) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
+ }
+ });
// deployRampartModule();
// configureSecurity();
} catch (PrivilegedActionException e) {
throw new ServiceRuntimeException(e.getException());
- } catch (AxisFault e) {
- throw new ServiceRuntimeException(e); // TODO: better exception
- }
+ }
configContext.setContextRoot(servletHost.getContextPath());