You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/03/08 21:40:13 UTC

svn commit: r1298567 - in /cxf/trunk/services/wsn: wsn-api/src/main/java/org/apache/cxf/wsn/util/ wsn-core/ wsn-core/src/main/java/org/apache/cxf/wsn/ wsn-core/src/main/java/org/apache/cxf/wsn/services/ wsn-core/src/main/resources/OSGI-INF/blueprint/ w...

Author: dkulp
Date: Thu Mar  8 20:40:12 2012
New Revision: 1298567

URL: http://svn.apache.org/viewvc?rev=1298567&view=rev
Log:
When WS-N is used with CXF in OSGi, wire in the jmx management and make sure it uses
a bundle specific bus instead of the global Bus.  Restore testing with
the RI which apparently has been broken for a while.

Modified:
    cxf/trunk/services/wsn/wsn-api/src/main/java/org/apache/cxf/wsn/util/WSNHelper.java
    cxf/trunk/services/wsn/wsn-core/pom.xml
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractCreatePullPoint.java
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractNotificationBroker.java
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/EndpointManager.java
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsCreatePullPoint.java
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsEndpointManager.java
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsNotificationBroker.java
    cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/Service.java
    cxf/trunk/services/wsn/wsn-core/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml
    cxf/trunk/services/wsn/wsn-core/src/test/java/org/apache/cxf/wsn/WsnBrokerTest.java
    cxf/trunk/services/wsn/wsn-osgi/pom.xml
    cxf/trunk/services/wsn/wsn-osgi/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml

Modified: cxf/trunk/services/wsn/wsn-api/src/main/java/org/apache/cxf/wsn/util/WSNHelper.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-api/src/main/java/org/apache/cxf/wsn/util/WSNHelper.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-api/src/main/java/org/apache/cxf/wsn/util/WSNHelper.java (original)
+++ cxf/trunk/services/wsn/wsn-api/src/main/java/org/apache/cxf/wsn/util/WSNHelper.java Thu Mar  8 20:40:12 2012
@@ -32,7 +32,14 @@ import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.wsn.wsdl.WSNWSDLLocator;
 
 public abstract class WSNHelper {
-
+    private static boolean setClassLoader = true;
+    public static boolean setClassLoader() {
+        return setClassLoader;
+    }
+    public static void setClassLoader(boolean cl) {
+        setClassLoader = cl;
+    }
+    
     public static <T> T getPort(EndpointReference ref, Class<T> serviceInterface) {
         if (!(ref instanceof W3CEndpointReference)) {
             throw new IllegalArgumentException("Unsupported endpoint reference: " 
@@ -46,7 +53,9 @@ public abstract class WSNHelper {
     public static <T> T getPort(String address, Class<T> serviceInterface) {
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
         try {
-            Thread.currentThread().setContextClassLoader(WSNHelper.class.getClassLoader());
+            if (setClassLoader) {
+                Thread.currentThread().setContextClassLoader(WSNHelper.class.getClassLoader());
+            }
             
             Service service = Service.create(WSNWSDLLocator.getWSDLUrl(),
                                              new QName("http://cxf.apache.org/wsn/jaxws", 
@@ -60,7 +69,9 @@ public abstract class WSNHelper {
     public static W3CEndpointReference createWSA(String address) {
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
         try {
-            Thread.currentThread().setContextClassLoader(WSNHelper.class.getClassLoader());
+            if (setClassLoader) {
+                Thread.currentThread().setContextClassLoader(WSNHelper.class.getClassLoader());
+            }
             
             return new W3CEndpointReferenceBuilder().address(address).build();
         } finally {

Modified: cxf/trunk/services/wsn/wsn-core/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/pom.xml?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/pom.xml (original)
+++ cxf/trunk/services/wsn/wsn-core/pom.xml Thu Mar  8 20:40:12 2012
@@ -38,6 +38,15 @@
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-jms_1.1_spec</artifactId>
             <version>1.1.1</version>
+        </dependency> 
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.aries.blueprint</groupId>
+            <artifactId>org.apache.aries.blueprint.core</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.activemq</groupId>
@@ -50,6 +59,11 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.cxf.services.wsn</groupId>
             <artifactId>cxf-services-wsn-api</artifactId>
             <version>${project.version}</version>

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractCreatePullPoint.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractCreatePullPoint.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractCreatePullPoint.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractCreatePullPoint.java Thu Mar  8 20:40:12 2012
@@ -29,6 +29,7 @@ import javax.jws.WebMethod;
 import javax.jws.WebParam;
 import javax.jws.WebResult;
 import javax.jws.WebService;
+import javax.management.ObjectName;
 
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.wsn.util.IdGenerator;
@@ -53,6 +54,14 @@ public abstract class AbstractCreatePull
         idGenerator = new IdGenerator();
         pullPoints = new ConcurrentHashMap<String, AbstractPullPoint>();
     }
+    @Override
+    public ObjectName getMBeanName() {
+        try {
+            return new ObjectName("org.apache.cxf.service.wsn:type=CreatePullPoint");
+        } catch (Exception e) {
+            return null;
+        }
+    }
 
     public void init() throws Exception {
         register();

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java Thu Mar  8 20:40:12 2012
@@ -18,6 +18,8 @@
  */
 package org.apache.cxf.wsn;
 
+import javax.management.ObjectName;
+import javax.xml.ws.Endpoint;
 import javax.xml.ws.wsaddressing.W3CEndpointReference;
 
 public abstract class AbstractEndpoint implements EndpointMBean {
@@ -28,12 +30,16 @@ public abstract class AbstractEndpoint i
 
     protected EndpointManager manager;
 
-    protected Object endpoint;
+    protected Endpoint endpoint;
 
     public AbstractEndpoint(String name) {
         this.name = name;
     }
 
+    public ObjectName getMBeanName() {
+        return null;
+    }
+    
     public String getName() {
         return name;
     }
@@ -52,7 +58,7 @@ public abstract class AbstractEndpoint i
 
     public void unregister() throws EndpointRegistrationException {
         if (endpoint != null) {
-            manager.unregister(endpoint);
+            manager.unregister(endpoint, this);
         }
     }
 

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractNotificationBroker.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractNotificationBroker.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractNotificationBroker.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractNotificationBroker.java Thu Mar  8 20:40:12 2012
@@ -31,6 +31,7 @@ import javax.jws.WebMethod;
 import javax.jws.WebParam;
 import javax.jws.WebResult;
 import javax.jws.WebService;
+import javax.management.ObjectName;
 import javax.xml.namespace.QName;
 import javax.xml.ws.wsaddressing.W3CEndpointReference;
 
@@ -100,6 +101,15 @@ public abstract class AbstractNotificati
         subscriptions = new ConcurrentHashMap<String, AbstractSubscription>();
         publishers = new ConcurrentHashMap<String, AbstractPublisher>();
     }
+    
+    @Override
+    public ObjectName getMBeanName() {
+        try {
+            return new ObjectName("org.apache.cxf.service.wsn:type=WSNotificationBroker");
+        } catch (Exception e) {
+            return null;
+        }
+    }
 
     public void init() throws Exception {
         register();

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/EndpointManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/EndpointManager.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/EndpointManager.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/EndpointManager.java Thu Mar  8 20:40:12 2012
@@ -18,13 +18,14 @@
  */
 package org.apache.cxf.wsn;
 
+import javax.xml.ws.Endpoint;
 import javax.xml.ws.wsaddressing.W3CEndpointReference;
 
 public interface EndpointManager {
 
-    Object register(String address, Object service) throws EndpointRegistrationException;
+    Endpoint register(String address, Object service) throws EndpointRegistrationException;
 
-    void unregister(Object endpoint) throws EndpointRegistrationException;
+    void unregister(Endpoint endpoint, Object service) throws EndpointRegistrationException;
 
-    W3CEndpointReference getEpr(Object endpoint);
+    W3CEndpointReference getEpr(Endpoint endpoint);
 }

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsCreatePullPoint.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsCreatePullPoint.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsCreatePullPoint.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsCreatePullPoint.java Thu Mar  8 20:40:12 2012
@@ -24,6 +24,7 @@ import javax.jws.WebService;
 import javax.xml.ws.BindingType;
 
 import org.apache.cxf.wsn.AbstractPullPoint;
+import org.apache.cxf.wsn.EndpointManager;
 import org.apache.cxf.wsn.jms.JmsCreatePullPoint;
 
 @WebService(endpointInterface = "org.oasis_open.docs.wsn.bw_2.CreatePullPoint",
@@ -35,13 +36,21 @@ public class JaxwsCreatePullPoint extend
     implements JaxwsCreatePullPointMBean {
 
     public JaxwsCreatePullPoint(String name) {
-        super(name);
-        manager = new JaxwsEndpointManager();
+        this(name, null, null);
     }
-
     public JaxwsCreatePullPoint(String name, ConnectionFactory connectionFactory) {
+        this(name, connectionFactory, null);
+    }
+
+    public JaxwsCreatePullPoint(String name, 
+                                ConnectionFactory connectionFactory,
+                                EndpointManager epManager) {
         super(name, connectionFactory);
-        manager = new JaxwsEndpointManager();
+        if (epManager == null) {
+            manager = new JaxwsEndpointManager();
+        } else {
+            manager = epManager;
+        }
     }
 
     @Override

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsEndpointManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsEndpointManager.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsEndpointManager.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsEndpointManager.java Thu Mar  8 20:40:12 2012
@@ -18,31 +18,77 @@
  */
 package org.apache.cxf.wsn.services;
 
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
 import javax.xml.ws.Endpoint;
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.spi.Provider;
 import javax.xml.ws.wsaddressing.W3CEndpointReference;
 
+import org.apache.cxf.wsn.AbstractEndpoint;
 import org.apache.cxf.wsn.EndpointManager;
 import org.apache.cxf.wsn.EndpointRegistrationException;
+import org.apache.cxf.wsn.util.WSNHelper;
 
 public class JaxwsEndpointManager implements EndpointManager {
+    protected MBeanServer mbeanServer;
+    
 
-    public Object register(String address, Object service) throws EndpointRegistrationException {
+
+    public void setMBeanServer(MBeanServer s) {
+        mbeanServer = s;
+    }
+    
+    
+    public Endpoint register(String address, Object service) throws EndpointRegistrationException {
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
         try {
-            Thread.currentThread().setContextClassLoader(JaxwsEndpointManager.class.getClassLoader());
-            Endpoint endpoint = Endpoint.create(service);
+            if (WSNHelper.setClassLoader()) {
+                Thread.currentThread().setContextClassLoader(JaxwsEndpointManager.class.getClassLoader());
+            }
+            String bindingId = SOAPBinding.SOAP11HTTP_BINDING;
+            if (isCXF()) {
+                bindingId = SOAPBinding.SOAP12HTTP_BINDING;
+            }
+            Endpoint endpoint = Endpoint.create(bindingId, service);
             endpoint.publish(address);
+            
+            try {
+                if (mbeanServer != null 
+                    && service instanceof AbstractEndpoint) {
+                    ObjectName on = ((AbstractEndpoint)service).getMBeanName();
+                    if (on != null) {
+                        mbeanServer.registerMBean(service, on);
+                    }
+                }
+            } catch (Exception ex) {
+                //ignore for now
+            }
             return endpoint;
         } finally {
             Thread.currentThread().setContextClassLoader(cl);
         }
     }
 
-    public void unregister(Object endpoint) throws EndpointRegistrationException {
-        ((Endpoint) endpoint).stop();
+    private boolean isCXF() {
+        return Provider.provider().getClass().getName().contains(".cxf");
+    }
+    public void unregister(Endpoint endpoint, Object service) throws EndpointRegistrationException {
+        try {
+            if (mbeanServer != null 
+                && service instanceof AbstractEndpoint) {
+                ObjectName on = ((AbstractEndpoint)service).getMBeanName();
+                if (on != null) {
+                    mbeanServer.unregisterMBean(on);
+                }
+            }
+        } catch (Exception ex) {
+            //ignore for now
+        }
+        endpoint.stop();
     }
 
-    public W3CEndpointReference getEpr(Object endpoint) {
-        return ((Endpoint) endpoint).getEndpointReference(W3CEndpointReference.class);
+    public W3CEndpointReference getEpr(Endpoint endpoint) {
+        return endpoint.getEndpointReference(W3CEndpointReference.class);
     }
 }

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsNotificationBroker.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsNotificationBroker.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsNotificationBroker.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/JaxwsNotificationBroker.java Thu Mar  8 20:40:12 2012
@@ -22,6 +22,7 @@ import javax.jms.ConnectionFactory;
 import javax.jws.WebService;
 import javax.xml.ws.BindingType;
 
+import org.apache.cxf.wsn.EndpointManager;
 import org.apache.cxf.wsn.jms.JmsNotificationBroker;
 import org.apache.cxf.wsn.jms.JmsPublisher;
 import org.apache.cxf.wsn.jms.JmsSubscription;
@@ -35,13 +36,20 @@ public class JaxwsNotificationBroker ext
     implements JaxwsNotificationBrokerMBean {
 
     public JaxwsNotificationBroker(String name) {
-        super(name);
-        manager = new JaxwsEndpointManager();
+        this(name, null);
     }
-
     public JaxwsNotificationBroker(String name, ConnectionFactory connectionFactory) {
+        this(name, connectionFactory, null);
+    }
+    public JaxwsNotificationBroker(String name,
+                                   ConnectionFactory connectionFactory,
+                                   EndpointManager epManager) {
         super(name, connectionFactory);
-        manager = new JaxwsEndpointManager();
+        if (epManager == null) {
+            manager = new JaxwsEndpointManager();
+        } else {
+            manager = epManager;
+        }
     }
 
     @Override

Modified: cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/Service.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/Service.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/Service.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/services/Service.java Thu Mar  8 20:40:12 2012
@@ -22,7 +22,6 @@ package org.apache.cxf.wsn.services;
 import java.lang.management.ManagementFactory;
 
 import javax.management.MBeanServer;
-import javax.management.ObjectName;
 
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.cxf.wsn.AbstractCreatePullPoint;
@@ -75,14 +74,9 @@ public class Service {
             
             MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
             
-            ObjectName nbServerName = 
-                new ObjectName("org.apache.cxf.service.mbeans:type=WSNotificationBroker");
+            mbs.registerMBean(notificationBrokerServer, notificationBrokerServer.getMBeanName());
             
-            ObjectName cpServerName = new ObjectName("org.apache.cxf.service.mbeans:type=CreatePullPoint");
-            
-            mbs.registerMBean(notificationBrokerServer, nbServerName);
-            
-            mbs.registerMBean(createPullPointServer, cpServerName);
+            mbs.registerMBean(createPullPointServer, createPullPointServer.getMBeanName());
        
         }
     }

Modified: cxf/trunk/services/wsn/wsn-core/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml (original)
+++ cxf/trunk/services/wsn/wsn-core/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml Thu Mar  8 20:40:12 2012
@@ -33,11 +33,19 @@
     <bean id="activemq" class="org.apache.activemq.ActiveMQConnectionFactory">
         <argument value="${cxf.wsn.activemq}" />
     </bean>
+    
+    <bean id="JaxwsEndpointManager" 
+    	class="org.apache.cxf.wsn.services.OSGiJaxwsEndpointManager"
+    	destroy-method="destroy">
+        <property name="bundleContext" ref="blueprintBundleContext"/>
+        <property name="blueprintContainer" ref="blueprintContainer"/>
+    </bean>
 
     <!-- NotificationBroker -->
     <bean id="notificationBroker" class="org.apache.cxf.wsn.services.JaxwsNotificationBroker" init-method="init" destroy-method="destroy">
         <argument value="NotificationBroker" />
         <argument ref="activemq" />
+        <argument ref="JaxwsEndpointManager"/>
         <property name="address" value="${cxf.wsn.rootUrl}${cxf.wsn.context}/NotificationBroker" />
     </bean>
     <service ref="notificationBroker" interface="org.oasis_open.docs.wsn.brw_2.NotificationBroker">
@@ -50,6 +58,7 @@
     <bean id="createPullPoint" class="org.apache.cxf.wsn.services.JaxwsCreatePullPoint" init-method="init" destroy-method="destroy">
         <argument value="org.apache.cxf.wsn.client.CreatePullPoint" />
         <argument ref="activemq" />
+        <argument ref="JaxwsEndpointManager"/>
         <property name="address" value="${cxf.wsn.rootUrl}${cxf.wsn.context}/CreatePullPoint" />
     </bean>
     <service ref="createPullPoint" interface="org.oasis_open.docs.wsn.bw_2.CreatePullPoint">

Modified: cxf/trunk/services/wsn/wsn-core/src/test/java/org/apache/cxf/wsn/WsnBrokerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-core/src/test/java/org/apache/cxf/wsn/WsnBrokerTest.java?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-core/src/test/java/org/apache/cxf/wsn/WsnBrokerTest.java (original)
+++ cxf/trunk/services/wsn/wsn-core/src/test/java/org/apache/cxf/wsn/WsnBrokerTest.java Thu Mar  8 20:40:12 2012
@@ -26,6 +26,8 @@ import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -56,6 +58,7 @@ public abstract class WsnBrokerTest exte
     private JaxwsCreatePullPoint createPullPointServer;
     private NotificationBroker notificationBroker;
     private CreatePullPoint createPullPoint;
+    private ClassLoader loader;
 
     private int port1 = 8182;
     private int port2;
@@ -65,9 +68,11 @@ public abstract class WsnBrokerTest exte
 
     @Override
     public void setUp() throws Exception {
+        loader = Thread.currentThread().getContextClassLoader();
         String impl = getProviderImpl();
         Thread.currentThread()
             .setContextClassLoader(new FakeClassLoader(impl));
+        WSNHelper.setClassLoader(false);
     
         System.setProperty("javax.xml.ws.spi.Provider", impl);
 
@@ -105,6 +110,8 @@ public abstract class WsnBrokerTest exte
             createPullPointServer.destroy();
         }
         System.clearProperty("javax.xml.ws.spi.Provider");
+        Thread.currentThread()
+            .setContextClassLoader(loader);
     }
 
     public void testBroker() throws Exception {
@@ -250,6 +257,13 @@ public abstract class WsnBrokerTest exte
                 return super.getResourceAsStream(name);
             }
         }
+        @Override
+        public Enumeration<URL> getResources(String name) throws IOException {
+            if ("META-INF/services/javax.xml.ws.spi.Provider".equals(name)) {
+                return Collections.emptyEnumeration();
+            }
+            return super.getResources(name);
+        }
     }
 
 }

Modified: cxf/trunk/services/wsn/wsn-osgi/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-osgi/pom.xml?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-osgi/pom.xml (original)
+++ cxf/trunk/services/wsn/wsn-osgi/pom.xml Thu Mar  8 20:40:12 2012
@@ -59,7 +59,7 @@
                             org.apache.activemq.activemq-core
                         </Require-Bundle>
                         <Import-Package>
-                            !org.apache.cxf.*,
+                            org.apache.cxf.*;resolution:=optional,
                             !org.apache.activemq*,
                             !org.apache.log4j.*,
                             !org.slf4j.*,
@@ -70,7 +70,7 @@
                         </Import-Package>
                         <Export-Package>
                             org.oasis_open.docs.wsn.*;version=1.3;-noimport:=true,
-                            org.oasis_open.docs.wsrf.*;version=1.2,
+                            org.oasis_open.docs.wsrf.*;version=1.2;-noimport:=true,
                             org.apache.cxf.wsn.client;version=${project.version}
                         </Export-Package>
                         <Private-Package>

Modified: cxf/trunk/services/wsn/wsn-osgi/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/services/wsn/wsn-osgi/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml?rev=1298567&r1=1298566&r2=1298567&view=diff
==============================================================================
--- cxf/trunk/services/wsn/wsn-osgi/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml (original)
+++ cxf/trunk/services/wsn/wsn-osgi/src/main/resources/OSGI-INF/blueprint/cxf-wsn.xml Thu Mar  8 20:40:12 2012
@@ -33,11 +33,19 @@
     <bean id="activemq" class="org.apache.activemq.ActiveMQConnectionFactory">
         <argument value="${cxf.wsn.activemq}" />
     </bean>
+    
+    <bean id="JaxwsEndpointManager" 
+    	class="org.apache.cxf.wsn.services.OSGiJaxwsEndpointManager"
+    	destroy-method="destroy">
+        <property name="bundleContext" ref="blueprintBundleContext"/>
+        <property name="blueprintContainer" ref="blueprintContainer"/>
+    </bean>
 
     <!-- NotificationBroker -->
     <bean id="notificationBroker" class="org.apache.cxf.wsn.services.JaxwsNotificationBroker" init-method="init" destroy-method="destroy">
         <argument value="NotificationBroker" />
         <argument ref="activemq" />
+        <argument ref="JaxwsEndpointManager"/>
         <property name="address" value="${cxf.wsn.rootUrl}${cxf.wsn.context}/NotificationBroker" />
     </bean>
     <service ref="notificationBroker" interface="org.oasis_open.docs.wsn.brw_2.NotificationBroker">
@@ -50,6 +58,7 @@
     <bean id="createPullPoint" class="org.apache.cxf.wsn.services.JaxwsCreatePullPoint" init-method="init" destroy-method="destroy">
         <argument value="org.apache.cxf.wsn.client.CreatePullPoint" />
         <argument ref="activemq" />
+        <argument ref="JaxwsEndpointManager"/>
         <property name="address" value="${cxf.wsn.rootUrl}${cxf.wsn.context}/CreatePullPoint" />
     </bean>
     <service ref="createPullPoint" interface="org.oasis_open.docs.wsn.bw_2.CreatePullPoint">