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 2014/01/17 20:01:24 UTC

svn commit: r1559222 - /cxf/branches/2.7.x-fixes/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java

Author: dkulp
Date: Fri Jan 17 19:01:23 2014
New Revision: 1559222

URL: http://svn.apache.org/r1559222
Log:
Merged revisions 1559220 via  git cherry-pick from
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1559220 | dkulp | 2014-01-17 13:53:56 -0500 (Fri, 17 Jan 2014) | 2 lines

  [CXF-5491] If the ws-discovery service fails to startup as part of th a normal listener process, log the warning and continue so the real services won't block.

........

Modified:
    cxf/branches/2.7.x-fixes/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java

Modified: cxf/branches/2.7.x-fixes/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java?rev=1559222&r1=1559221&r2=1559222&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java (original)
+++ cxf/branches/2.7.x-fixes/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java Fri Jan 17 19:01:23 2014
@@ -28,6 +28,8 @@ import java.util.ListIterator;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
@@ -54,6 +56,7 @@ 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.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.jaxws.spi.ProviderImpl;
@@ -82,6 +85,8 @@ import org.apache.cxf.ws.discovery.wsdl.
 import org.apache.cxf.wsdl.EndpointReferenceUtils;
 
 public class WSDiscoveryServiceImpl implements WSDiscoveryService {
+    private static final Logger LOG = LogUtils.getL7dLogger(WSDiscoveryService.class);
+    
     Bus bus;
     Endpoint udpEndpoint;
     WSDiscoveryClient client;
@@ -121,13 +126,13 @@ public class WSDiscoveryServiceImpl impl
     }
     
     public HelloType register(EndpointReference ref) {
-        startup();
+        startup(false);
         HelloType ht = client.register(ref); 
         registered.add(ht);
         return ht;
     }
     public void register(HelloType ht) {
-        startup();
+        startup(false);
         client.register(ht); 
         registered.add(ht);
     }
@@ -145,7 +150,9 @@ public class WSDiscoveryServiceImpl impl
         if (o == Boolean.TRUE || Boolean.valueOf((String)o)) {
             return;
         }
-        startup();
+        if (!startup(true)) {
+            return;
+        }
         HelloType ht = new HelloType();
         ht.setScopes(new ScopesType());
         ht.setMetadataVersion(1);
@@ -226,8 +233,10 @@ public class WSDiscoveryServiceImpl impl
     }
     
     
-    
     public synchronized void startup() {
+        startup(false);
+    }    
+    public synchronized boolean startup(boolean optional) {
         if (!started && client.isAdHoc()) {
             Bus b = BusFactory.getAndSetThreadDefaultBus(bus);
             try {
@@ -237,12 +246,19 @@ public class WSDiscoveryServiceImpl impl
                 udpEndpoint.setProperties(props);
                 udpEndpoint.publish("soap.udp://239.255.255.250:3702");
                 started = true;
+            } catch (RuntimeException ex) {
+                if (!optional) {
+                    throw ex;
+                } else {
+                    LOG.log(Level.WARNING, "Could not start WS-Discovery Service.", ex);
+                }
             } finally {
                 if (b != bus) {
                     BusFactory.setThreadDefaultBus(b);
                 }
             }
         }
+        return true;
     }