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/08/20 21:34:24 UTC
svn commit: r1375179 - in /cxf/trunk:
osgi/karaf/features/src/main/resources/ services/ws-discovery/
services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/
services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/w...
Author: dkulp
Date: Mon Aug 20 19:34:23 2012
New Revision: 1375179
URL: http://svn.apache.org/viewvc?rev=1375179&view=rev
Log:
Updates to get the discovery stuff working in OSGi
Added:
cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/
cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java
- copied, changed from r1375153, cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java
cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/OSGI-INF/
cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/OSGI-INF/blueprint/
cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/OSGI-INF/blueprint/cxf-wsdiscovery.xml
Modified:
cxf/trunk/osgi/karaf/features/src/main/resources/features.xml
cxf/trunk/services/ws-discovery/pom.xml
cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryClient.java
cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java
cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/listeners/WSDiscoveryServerListener.java
cxf/trunk/services/ws-discovery/ws-discovery-api/src/test/java/org/apache/cxf/ws/discovery/WSDiscoveryClientTest.java
cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/META-INF/cxf/bus-extensions.txt
Modified: cxf/trunk/osgi/karaf/features/src/main/resources/features.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/osgi/karaf/features/src/main/resources/features.xml?rev=1375179&r1=1375178&r2=1375179&view=diff
==============================================================================
--- cxf/trunk/osgi/karaf/features/src/main/resources/features.xml (original)
+++ cxf/trunk/osgi/karaf/features/src/main/resources/features.xml Mon Aug 20 19:34:23 2012
@@ -28,7 +28,7 @@
<bundle start-level='10' dependency="true">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-2.2/${cxf.servicemix.specs.version}</bundle>
<bundle start-level='10' dependency="true">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${cxf.servicemix.specs.version}</bundle>
<bundle start-level='10'>mvn:javax.mail/mail/${cxf.javax.mail.version}</bundle>
- <bundle start-level='10'>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr311-api-1.1.1/${cxf.servicemix.specs.version}</bundle>
+ <bundle start-level='10'>mvn:javax.ws.rs/javax.ws.rs-api/${cxf.javax.ws.rs.version}</bundle>
<bundle start-level='20'>mvn:org.codehaus.woodstox/stax2-api/${cxf.woodstox.stax2-api.version}</bundle>
<bundle start-level='20'>mvn:org.codehaus.woodstox/woodstox-core-asl/${cxf.woodstox.core.version}</bundle>
@@ -235,7 +235,11 @@
<feature version="${project.version}">cxf-bindings-soap</feature>
<bundle start-level='40'>mvn:org.apache.cxf/cxf-rt-transports-jms/${project.version}</bundle>
</feature>
-<feature name="cxf-javascript" version="${project.version}" resolver='(obr)'>
+ <feature name="cxf-transports-udp" version="${project.version}" resolver='(obr)'>
+ <feature version="${project.version}">cxf-core</feature>
+ <bundle start-level='40'>mvn:org.apache.cxf/cxf-rt-transports-udp/${project.version}</bundle>
+ </feature>
+ <feature name="cxf-javascript" version="${project.version}" resolver='(obr)'>
<feature version="${project.version}">cxf-core</feature>
<feature version="${project.version}">cxf-bindings-soap</feature>
<bundle start-level='40'>mvn:org.apache.cxf/cxf-rt-javascript/${project.version}</bundle>
@@ -298,6 +302,7 @@
<feature version="${project.version}">cxf-transports-local</feature>
<feature version="${project.version}">cxf-transports-jms</feature>
+ <feature version="${project.version}">cxf-transports-udp</feature>
<feature version="${project.version}">cxf-xjc-runtime</feature>
@@ -347,4 +352,16 @@
<bundle>mvn:org.apache.cxf.services.wsn/cxf-services-wsn-core/${project.version}</bundle>
</feature>
+
+ <feature name="cxf-ws-discovery-api" version="${project.version}" resolver="(obr)">
+ <feature version="${project.version}">cxf-transports-udp</feature>
+ <feature version="${project.version}">cxf-ws-addr</feature>
+ <feature version="${project.version}">cxf-jaxws</feature>
+ <bundle>mvn:org.apache.cxf.services.ws-discovery/cxf-services-ws-discovery-api/${project.version}</bundle>
+ </feature>
+
+ <feature name="cxf-ws-discovery" version="${project.version}" resolver="(obr)">
+ <feature version="${project.version}">cxf-ws-discovery-api</feature>
+ <bundle>mvn:org.apache.cxf.services.ws-discovery/cxf-services-ws-discovery-service/${project.version}</bundle>
+ </feature>
</features>
Modified: cxf/trunk/services/ws-discovery/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/pom.xml?rev=1375179&r1=1375178&r2=1375179&view=diff
==============================================================================
--- cxf/trunk/services/ws-discovery/pom.xml (original)
+++ cxf/trunk/services/ws-discovery/pom.xml Mon Aug 20 19:34:23 2012
@@ -22,7 +22,7 @@
<artifactId>cxf-services-ws-discovery</artifactId>
<packaging>pom</packaging>
<version>2.7.0-SNAPSHOT</version>
- <name>Apache CXF WS-Discovery service</name>
+ <name>Apache CXF WS-Discovery</name>
<url>http://cxf.apache.org</url>
<parent>
Modified: cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryClient.java?rev=1375179&r1=1375178&r2=1375179&view=diff
==============================================================================
--- cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryClient.java (original)
+++ cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryClient.java Mon Aug 20 19:34:23 2012
@@ -42,6 +42,7 @@ import javax.xml.ws.wsaddressing.W3CEndp
import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
import org.apache.cxf.common.jaxb.JAXBContextCache;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.headers.Header;
@@ -67,9 +68,7 @@ import org.apache.cxf.wsdl.EndpointRefer
*
*/
public class WSDiscoveryClient implements Closeable {
- static final QName SERVICE_QNAME
- = new QName("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01", "DiscoveryProxy");
- private static final QName PORT_QNAME
+ public static final QName SERVICE_QNAME
= new QName("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01", "DiscoveryProxy");
@@ -85,10 +84,18 @@ public class WSDiscoveryClient implement
public WSDiscoveryClient() {
}
+ public WSDiscoveryClient(Bus bus) {
+ this.bus = bus;
+ }
public WSDiscoveryClient(String address) {
this.address = address;
adHoc = false;
}
+
+ public String getAddress() {
+ return address;
+ }
+
private synchronized JAXBContext getJAXBContext() {
if (jaxbContext == null) {
try {
@@ -101,9 +108,14 @@ public class WSDiscoveryClient implement
}
private synchronized Service getService() {
if (service == null) {
- service = Service.create(SERVICE_QNAME);
- service.addPort(PORT_QNAME, SOAPBinding.SOAP12HTTP_BINDING, address);
- }
+ Bus b = BusFactory.getAndSetThreadDefaultBus(bus);
+ try {
+ service = Service.create(SERVICE_QNAME);
+ service.addPort(SERVICE_QNAME, SOAPBinding.SOAP12HTTP_BINDING, address);
+ } finally {
+ BusFactory.setThreadDefaultBus(b);
+ }
+ }
return service;
}
private synchronized void resetDispatch(String newad) {
@@ -116,7 +128,7 @@ public class WSDiscoveryClient implement
private synchronized Dispatch<Object> getDispatchInternal(boolean addSeq) {
if (dispatch == null) {
AddressingFeature f = new AddressingFeature(true, true);
- dispatch = getService().createDispatch(PORT_QNAME, getJAXBContext(), Service.Mode.PAYLOAD, f);
+ dispatch = getService().createDispatch(SERVICE_QNAME, getJAXBContext(), Service.Mode.PAYLOAD, f);
dispatch.getRequestContext().put("thread.local.request.context", Boolean.TRUE);
}
addAddressing(dispatch, false);
Modified: cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java?rev=1375179&r1=1375178&r2=1375179&view=diff
==============================================================================
--- cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java (original)
+++ cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java Mon Aug 20 19:34:23 2012
@@ -19,261 +19,33 @@
package org.apache.cxf.ws.discovery;
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.annotation.XmlSeeAlso;
-import javax.xml.bind.util.JAXBSource;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.transform.Source;
-import javax.xml.ws.Endpoint;
import javax.xml.ws.EndpointReference;
-import javax.xml.ws.Provider;
-import javax.xml.ws.WebServiceProvider;
-import javax.xml.ws.soap.Addressing;
-
-import org.w3c.dom.Document;
-import org.apache.cxf.Bus;
-import org.apache.cxf.common.jaxb.JAXBContextCache;
import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.staxutils.StaxUtils;
-import org.apache.cxf.ws.discovery.wsdl.ByeType;
import org.apache.cxf.ws.discovery.wsdl.HelloType;
-import org.apache.cxf.ws.discovery.wsdl.ObjectFactory;
-import org.apache.cxf.ws.discovery.wsdl.ProbeMatchType;
-import org.apache.cxf.ws.discovery.wsdl.ProbeMatchesType;
-import org.apache.cxf.ws.discovery.wsdl.ProbeType;
-import org.apache.cxf.ws.discovery.wsdl.ScopesType;
-
-public class WSDiscoveryService {
- Bus bus;
- Endpoint udpEndpoint;
- WSDiscoveryClient client;
- List<HelloType> registered = new CopyOnWriteArrayList<HelloType>();
- ObjectFactory factory = new ObjectFactory();
- boolean started;
-
- public WSDiscoveryService(Bus b) {
- bus = b;
- client = new WSDiscoveryClient();
- }
-
- public HelloType register(EndpointReference ref) {
- startup();
- HelloType ht = client.register(ref);
- registered.add(ht);
- return ht;
- }
-
- public void serverStarted(Server server) {
- startup();
- HelloType ht = new HelloType();
- ht.setScopes(new ScopesType());
- ht.setMetadataVersion(1);
- ht.getTypes().add(server.getEndpoint().getEndpointInfo().getInterface().getName());
- Object o = server.getEndpoint().get("ws-discover.scopes");
- if (o != null) {
- setScopes(ht, o);
- }
- setXAddrs(ht, server);
- ht = client.register(ht);
- registered.add(ht);
- server.getEndpoint().put(HelloType.class.getName(), ht);
- }
-
- private void setXAddrs(HelloType ht, Server server) {
- String s = server.getEndpoint().getEndpointInfo().getAddress();
- //FIXME - servlet mode, need all the servlet information to create a full address
- ht.getXAddrs().add(s);
- }
-
- private void setScopes(HelloType ht, Object o) {
- if (o instanceof List) {
- List<?> l = (List)o;
- for (Object o2 : l) {
- ht.getScopes().getValue().add(o2.toString());
- }
- } else {
- ht.getScopes().getValue().add(o.toString());
- }
- }
- public void serverStopped(Server server) {
- HelloType ht = (HelloType)server.getEndpoint().get(HelloType.class.getName());
- if (ht != null) {
- unregister(ht);
- }
- }
-
-
- public void unregister(HelloType ht) {
- registered.remove(ht);
- client.unregister(ht);
- }
+public interface WSDiscoveryService {
+ /** Registers the given EndpointReference with the service. Also sends the UDP "Hello"
+ * @param ref
+ * @return the HelloType that was sent so it can be used to call unregister
+ */
+ HelloType register(EndpointReference ref);
+
+ void register(HelloType ht);
+ void unregister(HelloType ht);
+
+ /**
+ * Utility methods to aid in calling the register/unregister for the appropriate CXF server
+ * @param server
+ */
+ void serverStarted(Server server);
+ void serverStopped(Server server);
+
+ /**
+ * The service requires a WSDiscoveryClient in order to interact with a DiscoveryProxy, send Hello/Bye/etc..
+ * @return the client being used
+ */
+ WSDiscoveryClient getClient();
-
- public synchronized void startup() {
- if (!started) {
- udpEndpoint = Endpoint.create(new WSDiscoveryProvider());
- udpEndpoint.publish("soap.udp://239.255.255.250:3702");
- started = true;
- }
- }
-
-
- public ProbeMatchesType handleProbe(ProbeType pt) {
- List<HelloType> consider = new LinkedList<HelloType>(registered);
- //step one, consider the "types"
- //ALL types in the probe must be in the registered type
- if (pt.getTypes() != null && !pt.getTypes().isEmpty()) {
- ListIterator<HelloType> cit = consider.listIterator();
- while (cit.hasNext()) {
- HelloType ht = cit.next();
- boolean matches = true;
- for (QName qn : pt.getTypes()) {
- if (!ht.getTypes().contains(qn)) {
- matches = false;
- }
- }
- if (!matches) {
- cit.remove();
- }
- }
- }
- //next, consider the scopes
- matchScopes(pt, consider);
-
- if (consider.isEmpty()) {
- return null;
- }
- ProbeMatchesType pmt = new ProbeMatchesType();
- for (HelloType ht : consider) {
- ProbeMatchType m = new ProbeMatchType();
- m.setEndpointReference(ht.getEndpointReference());
- m.setScopes(ht.getScopes());
- m.setMetadataVersion(ht.getMetadataVersion());
- m.getTypes().addAll(ht.getTypes());
- m.getXAddrs().addAll(ht.getXAddrs());
- pmt.getProbeMatch().add(m);
- }
- return pmt;
- }
-
- private void matchScopes(ProbeType pt, List<HelloType> consider) {
- if (pt.getScopes() == null || pt.getScopes().getValue().isEmpty()) {
- return;
- }
- String mb = pt.getScopes().getMatchBy();
- if (mb == null) {
- mb = "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/rfc3986";
- }
-
- ListIterator<HelloType> cit = consider.listIterator();
- while (cit.hasNext()) {
- HelloType ht = cit.next();
- boolean matches = false;
-
- if ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/rfc3986".equals(mb)) {
- //FIXME
- } else if ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/uuid".equals(mb)) {
- //FIXME
- } else if ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/ldap".equals(mb)) {
- //FIXME
- } else if ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/strcmp0".equals(mb)) {
- //FIXME
- } else if ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/none".equals(mb)
- && (ht.getScopes() == null || ht.getScopes().getValue().isEmpty())) {
- matches = true;
- }
- if (!matches) {
- cit.remove();
- }
- }
- }
-
-
- @WebServiceProvider(wsdlLocation = "classpath:/org/apache/cxf/ws/discovery/wsdl/wsdd-discovery-1.1-wsdl-os.wsdl",
- targetNamespace = "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01",
- serviceName = "Discovery",
- portName = "DiscoveryUDP")
- @XmlSeeAlso(ObjectFactory.class)
- @Addressing(required = true)
- class WSDiscoveryProvider implements Provider<Source> {
-
- JAXBContext context;
- public WSDiscoveryProvider() {
- try {
- context = JAXBContextCache.getCachedContextAndSchemas(ObjectFactory.class).getContext();
- } catch (JAXBException e) {
- e.printStackTrace();
- }
- }
-
-
- public Source invoke(Source request) {
- try {
- //Bug in JAXB - if you pass the StaxSource or SaxSource into unmarshall,
- //the namespaces for the QNames for the Types elements are lost.
- //Since WS-Discovery messages are small (UDP datagram size), parsing to DOM
- //is not a HUGE deal
- Document doc = StaxUtils.read(request);
-
- Object obj = context.createUnmarshaller().unmarshal(doc.getDocumentElement());
- if (obj instanceof JAXBElement) {
- obj = ((JAXBElement)obj).getValue();
- }
- if (obj instanceof ProbeType) {
- ProbeMatchesType pmt = handleProbe((ProbeType)obj);
- if (pmt == null) {
- return null;
- }
- return new JAXBSource(context, factory.createProbeMatches(pmt));
- } else if (obj instanceof HelloType) {
- //check if it's a DiscoveryProxy
- HelloType h = (HelloType)obj;
- if (h.getTypes().contains(WSDiscoveryClient.SERVICE_QNAME)
- || h.getTypes().contains(new QName("", WSDiscoveryClient.SERVICE_QNAME.getLocalPart()))) {
- // A DiscoveryProxy wants us to flip to managed mode
- try {
- client.close();
- client = new WSDiscoveryClient(h.getXAddrs().get(0));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- } else if (obj instanceof ByeType) {
- ByeType h = (ByeType)obj;
- if (h.getTypes().contains(WSDiscoveryClient.SERVICE_QNAME)
- || h.getTypes().contains(new QName("", WSDiscoveryClient.SERVICE_QNAME.getLocalPart()))) {
- // Our proxy has gone away, flip to ad-hoc
- try {
- if (client.address.equals(h.getXAddrs().get(0))) {
- client.close();
- client = new WSDiscoveryClient();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- } catch (JAXBException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (XMLStreamException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- return null;
- }
- }
-
}
Copied: cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java (from r1375153, cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java?p2=cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java&p1=cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java&r1=1375153&r2=1375179&rev=1375179&view=diff
==============================================================================
--- cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/WSDiscoveryService.java (original)
+++ cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java Mon Aug 20 19:34:23 2012
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.cxf.ws.discovery;
+package org.apache.cxf.ws.discovery.internal;
import java.io.IOException;
import java.util.LinkedList;
@@ -42,9 +42,12 @@ import javax.xml.ws.soap.Addressing;
import org.w3c.dom.Document;
import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
import org.apache.cxf.common.jaxb.JAXBContextCache;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.staxutils.StaxUtils;
+import org.apache.cxf.ws.discovery.WSDiscoveryClient;
+import org.apache.cxf.ws.discovery.WSDiscoveryService;
import org.apache.cxf.ws.discovery.wsdl.ByeType;
import org.apache.cxf.ws.discovery.wsdl.HelloType;
import org.apache.cxf.ws.discovery.wsdl.ObjectFactory;
@@ -53,7 +56,7 @@ import org.apache.cxf.ws.discovery.wsdl.
import org.apache.cxf.ws.discovery.wsdl.ProbeType;
import org.apache.cxf.ws.discovery.wsdl.ScopesType;
-public class WSDiscoveryService {
+public class WSDiscoveryServiceImpl implements WSDiscoveryService {
Bus bus;
Endpoint udpEndpoint;
WSDiscoveryClient client;
@@ -61,10 +64,18 @@ public class WSDiscoveryService {
ObjectFactory factory = new ObjectFactory();
boolean started;
- public WSDiscoveryService(Bus b) {
+ public WSDiscoveryServiceImpl(Bus b) {
bus = b;
client = new WSDiscoveryClient();
}
+ public WSDiscoveryServiceImpl() {
+ bus = BusFactory.newInstance().createBus();
+ client = new WSDiscoveryClient();
+ }
+
+ public WSDiscoveryClient getClient() {
+ return client;
+ }
public HelloType register(EndpointReference ref) {
startup();
@@ -72,6 +83,11 @@ public class WSDiscoveryService {
registered.add(ht);
return ht;
}
+ public void register(HelloType ht) {
+ startup();
+ client.register(ht);
+ registered.add(ht);
+ }
public void serverStarted(Server server) {
startup();
@@ -256,7 +272,7 @@ public class WSDiscoveryService {
|| h.getTypes().contains(new QName("", WSDiscoveryClient.SERVICE_QNAME.getLocalPart()))) {
// Our proxy has gone away, flip to ad-hoc
try {
- if (client.address.equals(h.getXAddrs().get(0))) {
+ if (client.getAddress().equals(h.getXAddrs().get(0))) {
client.close();
client = new WSDiscoveryClient();
}
Modified: cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/listeners/WSDiscoveryServerListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/listeners/WSDiscoveryServerListener.java?rev=1375179&r1=1375178&r2=1375179&view=diff
==============================================================================
--- cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/listeners/WSDiscoveryServerListener.java (original)
+++ cxf/trunk/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/listeners/WSDiscoveryServerListener.java Mon Aug 20 19:34:23 2012
@@ -22,22 +22,33 @@ package org.apache.cxf.ws.discovery.list
import javax.xml.namespace.QName;
import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.endpoint.ServerLifeCycleListener;
-import org.apache.cxf.ws.discovery.WSDiscoveryService;
+import org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl;
/**
*
*/
public class WSDiscoveryServerListener implements ServerLifeCycleListener {
- WSDiscoveryService service;
+ static WSDiscoveryServiceImpl staticService;
+
+ WSDiscoveryServiceImpl service;
public WSDiscoveryServerListener(Bus bus) {
- service = bus.getExtension(WSDiscoveryService.class);
+ service = bus.getExtension(WSDiscoveryServiceImpl.class);
if (service == null) {
- service = new WSDiscoveryService(bus);
- bus.setExtension(service, WSDiscoveryService.class);
+ service = getStaticService();
+ bus.setExtension(service, WSDiscoveryServiceImpl.class);
+ }
+ }
+
+ private WSDiscoveryServiceImpl getStaticService() {
+ if (staticService == null) {
+ Bus bus = BusFactory.newInstance().createBus();
+ staticService = new WSDiscoveryServiceImpl(bus);
}
+ return staticService;
}
public void startServer(Server server) {
Modified: cxf/trunk/services/ws-discovery/ws-discovery-api/src/test/java/org/apache/cxf/ws/discovery/WSDiscoveryClientTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/ws-discovery-api/src/test/java/org/apache/cxf/ws/discovery/WSDiscoveryClientTest.java?rev=1375179&r1=1375178&r2=1375179&view=diff
==============================================================================
--- cxf/trunk/services/ws-discovery/ws-discovery-api/src/test/java/org/apache/cxf/ws/discovery/WSDiscoveryClientTest.java (original)
+++ cxf/trunk/services/ws-discovery/ws-discovery-api/src/test/java/org/apache/cxf/ws/discovery/WSDiscoveryClientTest.java Mon Aug 20 19:34:23 2012
@@ -23,6 +23,7 @@ import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
+import org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl;
import org.apache.cxf.ws.discovery.wsdl.HelloType;
import org.apache.cxf.ws.discovery.wsdl.ProbeMatchType;
import org.apache.cxf.ws.discovery.wsdl.ProbeMatchesType;
@@ -42,7 +43,7 @@ public final class WSDiscoveryClientTest
public static void main(String[] arg) throws Exception {
try {
Endpoint ep = Endpoint.publish("http://localhost:51919/Foo/Snarf", new FooImpl());
- WSDiscoveryService service = new WSDiscoveryService(null);
+ WSDiscoveryServiceImpl service = new WSDiscoveryServiceImpl(null);
service.startup();
Modified: cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/META-INF/cxf/bus-extensions.txt
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/META-INF/cxf/bus-extensions.txt?rev=1375179&r1=1375178&r2=1375179&view=diff
==============================================================================
--- cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/META-INF/cxf/bus-extensions.txt (original)
+++ cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/META-INF/cxf/bus-extensions.txt Mon Aug 20 19:34:23 2012
@@ -1,2 +1,2 @@
-org.apache.cxf.ws.discovery.listeners.WSDiscoveryServerListener::true
org.apache.cxf.ws.discovery.WSDiscoveryService::true
+
Added: cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/OSGI-INF/blueprint/cxf-wsdiscovery.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/OSGI-INF/blueprint/cxf-wsdiscovery.xml?rev=1375179&view=auto
==============================================================================
--- cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/OSGI-INF/blueprint/cxf-wsdiscovery.xml (added)
+++ cxf/trunk/services/ws-discovery/ws-discovery-service/src/main/resources/OSGI-INF/blueprint/cxf-wsdiscovery.xml Mon Aug 20 19:34:23 2012
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0">
+
+ <!-- Single discovery service to avoid lots of UDP packets, particularly on probes -->
+ <bean id="discoveryService" class="org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl"/>
+
+ <service ref="discoveryService" interface="org.apache.cxf.ws.discovery.WSDiscoveryService" />
+
+</blueprint>
\ No newline at end of file