[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();
+ }
}
}