Merge pull request #998 from jbonofre/KARAF-6523

[KARAF-6523] Cleanly destroy CXF server in REST/SOAP examples
diff --git a/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/RestService.java b/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/RestService.java
index 52a5db7..f51cbe3 100644
--- a/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/RestService.java
+++ b/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/RestService.java
@@ -18,13 +18,17 @@
 
 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
 import org.apache.cxf.BusFactory;
+import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 
 @Component
 public class RestService {
 
+    private Server server;
+
     @Activate
     public void activate() throws Exception {
         JAXRSServerFactoryBean bean = new JAXRSServerFactoryBean();
@@ -32,7 +36,14 @@
         bean.setBus(BusFactory.getDefaultBus());
         bean.setProvider(new JacksonJsonProvider());
         bean.setServiceBean(new BookingServiceRest());
-        bean.create();
+        server = bean.create();
+    }
+
+    @Deactivate
+    public void deactivate() throws Exception {
+        if (server != null) {
+            server.destroy();
+        }
     }
 
 }
diff --git a/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/SoapService.java b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/SoapService.java
index 2e87411..eb21555 100644
--- a/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/SoapService.java
+++ b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/SoapService.java
@@ -17,19 +17,32 @@
 package org.apache.karaf.examples.soap.scr;
 
 import org.apache.cxf.BusFactory;
+import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
+import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 
 @Component
 public class SoapService {
 
+    private Server server;
+
+    @Activate
     public void activate() throws Exception {
         JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
         bean.setAddress("/example");
         bean.setServiceClass(BookingServiceSoap.class);
         bean.setServiceBean(new BookingServiceSoapImpl());
         bean.setBus(BusFactory.getDefaultBus());
-        bean.create();
+        server = bean.create();
+    }
+
+    @Deactivate
+    public void deactivate() throws Exception {
+        if (server != null) {
+            server.destroy();
+        }
     }
 
 }