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 2013/05/17 18:10:12 UTC

svn commit: r1483892 - in /cxf/branches/2.7.x-fixes: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/spring/ systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/

Author: dkulp
Date: Fri May 17 16:10:11 2013
New Revision: 1483892

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

........
  r1483888 | dkulp | 2013-05-17 12:02:38 -0400 (Fri, 17 May 2013) | 2 lines

  [CXF-5022] Fix problems with JAX-RS services starting on the same URL

........

Modified:
    cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSBindingFactory.java
    cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties
    cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/spring/servers.xml
    cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/Server.java

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSBindingFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSBindingFactory.java?rev=1483892&r1=1483891&r2=1483892&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSBindingFactory.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSBindingFactory.java Fri May 17 16:10:11 2013
@@ -19,6 +19,8 @@
 package org.apache.cxf.jaxrs;
 
 
+import java.util.logging.Logger;
+
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.Bus;
@@ -26,12 +28,17 @@ import org.apache.cxf.binding.AbstractBa
 import org.apache.cxf.binding.Binding;
 import org.apache.cxf.binding.xml.XMLBinding;
 import org.apache.cxf.binding.xml.interceptor.XMLFaultOutInterceptor;
+import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.injection.NoJSR250Annotations;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.interceptor.StaxOutInterceptor;
 import org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor;
 import org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor;
 import org.apache.cxf.service.Service;
+import org.apache.cxf.service.factory.ServiceConstructionException;
 import org.apache.cxf.service.model.BindingInfo;
+import org.apache.cxf.transport.Destination;
 
 /**
  * The CXF BindingFactory implementation which is used to register 
@@ -39,9 +46,11 @@ import org.apache.cxf.service.model.Bind
  */
 @NoJSR250Annotations(unlessNull = { "bus" })
 public class JAXRSBindingFactory extends AbstractBaseBindingFactory {
-
     public static final String JAXRS_BINDING_ID = "http://apache.org/cxf/binding/jaxrs";
+    
+    private static final Logger LOG = LogUtils.getL7dLogger(JAXRSBindingFactory.class);
 
+    
     public JAXRSBindingFactory() {
     }
     public JAXRSBindingFactory(Bus b) {
@@ -70,6 +79,16 @@ public class JAXRSBindingFactory extends
         info.setName(new QName(JAXRSBindingFactory.JAXRS_BINDING_ID, "binding"));
         return info;
     }
+    
+    public void addListener(Destination d, Endpoint e) {
+        synchronized (d) {
+            if (d.getMessageObserver() != null) {
+                throw new ServiceConstructionException(new Message("ALREADY_RUNNING", LOG,
+                                                                   e.getEndpointInfo().getAddress()));
+            }
+            super.addListener(d, e);
+        }
+    }
 
 
 }

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties?rev=1483892&r1=1483891&r2=1483892&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/Messages.properties Fri May 17 16:10:11 2013
@@ -22,4 +22,4 @@ NO_RESOURCES_AVAILABLE=No resource class
 NO_SUBRESOURCE_FOUND=No subresource locator found for path {0}
 NULL_SUBRESOURCE=Null subresource locator is returned for path {0}
 PROXY_INVOCATION_FAILURE=Resource method "{0}" available at {1} can not be called on proxy. Moving resource methods to interface and having {1} implement it may help.
-
+ALREADY_RUNNING=There is an endpoint already running on {0}.

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/spring/servers.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/spring/servers.xml?rev=1483892&r1=1483891&r2=1483892&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/spring/servers.xml (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/spring/servers.xml Fri May 17 16:10:11 2013
@@ -80,7 +80,7 @@ http://cxf.apache.org/jaxrs http://cxf.a
   
   <jaxrs:server id="moduleServer"
     modelRef="classpath:/org/apache/cxf/jaxrs/spring/resources.xml"
-    address="http://localhost:9090/simpleWithAddress"
+    address="http://localhost:9090/simpleWithAddress2"
     bus="cxf"/>
   
 </beans>

Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/Server.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/Server.java?rev=1483892&r1=1483891&r2=1483892&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/Server.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/Server.java Fri May 17 16:10:11 2013
@@ -20,6 +20,9 @@
 package org.apache.cxf.systest.jaxrs.failover;
 
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
 import org.apache.cxf.systest.jaxrs.BookStore;
@@ -35,17 +38,26 @@ public class Server extends AbstractBusT
     public static final String ADDRESS3 = "http://localhost:" + PORT3 + "/work/rest";
     
 
+    List<org.apache.cxf.endpoint.Server> servers = new ArrayList<org.apache.cxf.endpoint.Server>();
+    
     protected void run()  {
         createEndpoint(ADDRESS2);
         createEndpoint(ADDRESS3);
     }
-    
+    public void tearDown() throws Exception {
+        for (org.apache.cxf.endpoint.Server s : servers) {
+            s.stop();
+            s.destroy();
+        }
+        servers.clear();
+    }
+        
     private void createEndpoint(String address) {
         JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
         sf.setResourceClasses(BookStore.class);
         sf.setResourceProvider(BookStore.class, new SingletonResourceProvider(new BookStore(), false));
         sf.setAddress(address);
-        sf.create();
+        servers.add(sf.create());
     }
 
     public static void main(String[] args) {