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 2008/05/19 23:07:55 UTC

svn commit: r657978 - in /cxf/trunk: rt/core/src/main/java/org/apache/cxf/transport/ rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/ systests/src/test/java/org/apache/cxf/systest/http/

Author: dkulp
Date: Mon May 19 14:07:54 2008
New Revision: 657978

URL: http://svn.apache.org/viewvc?rev=657978&view=rev
Log:
[CXF-1589] Fix problems of calling Endpoint.publish with a busy port not always throwing an exception back

Modified:
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractObservable.java
    cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
    cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http/ClientServerSessionTest.java

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractObservable.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractObservable.java?rev=657978&r1=657977&r2=657978&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractObservable.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractObservable.java Mon May 19 14:07:54 2008
@@ -44,7 +44,12 @@
             if (observer != null) {
                 getLogger().fine("registering incoming observer: " + observer);
                 if (old == null) {
-                    activate();
+                    try {
+                        activate();
+                    } catch (RuntimeException ex) {
+                        incomingObserver = null;
+                        throw ex;
+                    }
                 }
             } else {
                 if (old != null) {

Modified: cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java?rev=657978&r1=657977&r2=657978&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java (original)
+++ cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java Mon May 19 14:07:54 2008
@@ -309,6 +309,7 @@
                 } catch (Exception ex) {
                     //ignore - probably wasn't fully started anyway
                 }
+                server = null;
                 throw new Fault(new Message("START_UP_SERVER_FAILED_MSG", LOG, e.getMessage()), e);
             }
         }        

Modified: cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java?rev=657978&r1=657977&r2=657978&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java (original)
+++ cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java Mon May 19 14:07:54 2008
@@ -21,8 +21,8 @@
 import java.io.IOException;
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
@@ -39,7 +39,7 @@
     implements DestinationFactory {
 
     private Map<String, JettyHTTPDestination> destinations = 
-        new HashMap<String, JettyHTTPDestination>();
+        new ConcurrentHashMap<String, JettyHTTPDestination>();
     
     public JettyHTTPTransportFactory() {
         super();
@@ -98,7 +98,7 @@
         throws IOException {
         
         String addr = endpointInfo.getAddress();
-        JettyHTTPDestination destination = destinations.get(addr);
+        JettyHTTPDestination destination = addr == null ? null : destinations.get(addr);
         if (destination == null) {
             destination = createDestination(endpointInfo);
         }
@@ -110,8 +110,8 @@
         EndpointInfo endpointInfo
     ) throws IOException {
         
-        JettyHTTPDestination destination = 
-            destinations.get(endpointInfo.getAddress());
+        String addr = endpointInfo.getAddress();
+        JettyHTTPDestination destination = addr == null ? null : destinations.get(addr);
         if (destination == null) {
             destination = 
                 new JettyHTTPDestination(getBus(), this, endpointInfo);

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http/ClientServerSessionTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http/ClientServerSessionTest.java?rev=657978&r1=657977&r2=657978&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http/ClientServerSessionTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/http/ClientServerSessionTest.java Mon May 19 14:07:54 2008
@@ -22,6 +22,8 @@
 import java.lang.reflect.UndeclaredThrowableException;
 
 import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.WebServiceException;
 
 import org.apache.cxf.greeter_control.Greeter;
 import org.apache.cxf.greeter_control.GreeterService;
@@ -94,4 +96,24 @@
         }
     }
     
+    @Test
+    public void testPublishOnBusyPort() {
+        GreeterSessionImpl implementor = new GreeterSessionImpl();
+        String address = "http://localhost:9020/SoapContext/GreeterPort";
+        try {
+            Endpoint.publish(address, implementor);
+            fail("Should have failed to publish as the port is busy");
+        } catch (WebServiceException ex) {
+            //ignore
+        }
+        try {
+            //CXF-1589
+            Endpoint.publish(address, implementor);
+            fail("Should have failed to publish as the port is busy");
+        } catch (WebServiceException ex) {
+            //ignore
+        }
+        
+    }
+    
 }