[CXF-6091] Fix problems stoping servers that are using the MultiEndpointObserver Patch from Vadim Beilin applied
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f68f775a Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f68f775a Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f68f775a Branch: refs/heads/3.0.x-fixes Commit: f68f775a7b95a268e66ebbc832d1f8a30c9ac240 Parents: 2d246e7 Author: Daniel Kulp <[email protected]> Authored: Fri Nov 7 13:40:46 2014 -0500 Committer: Daniel Kulp <[email protected]> Committed: Fri Nov 7 13:58:53 2014 -0500 ---------------------------------------------------------------------- .../src/main/java/org/apache/cxf/endpoint/ServerImpl.java | 9 +++++---- .../cxf/frontend/soap/SoapBindingSelectionTest.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/f68f775a/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java b/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java index bb9d7fc..5180594 100644 --- a/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java +++ b/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java @@ -167,11 +167,12 @@ public class ServerImpl implements Server { MessageObserver mo = getDestination().getMessageObserver(); if (mo instanceof MultipleEndpointObserver) { ((MultipleEndpointObserver)mo).getEndpoints().remove(endpoint); - if (!((MultipleEndpointObserver)mo).getEndpoints().isEmpty()) { - return; + if (((MultipleEndpointObserver)mo).getEndpoints().isEmpty()) { + getDestination().setMessageObserver(null); } - } - getDestination().setMessageObserver(null); + } else { + getDestination().setMessageObserver(null); + } stopped = true; } http://git-wip-us.apache.org/repos/asf/cxf/blob/f68f775a/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java ---------------------------------------------------------------------- diff --git a/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java b/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java index a25379b..13277e5 100644 --- a/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java +++ b/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java @@ -94,6 +94,16 @@ public class SoapBindingSelectionTest extends AbstractSimpleFrontendTest { assertFalse(service1Invoked); assertTrue(service2Invoked); + + server2.stop(); + server2.start(); + + nd = invoke("http://localhost/Hello", LocalTransportFactory.TRANSPORT_ID, "soap12.xml"); + assertEquals("http://www.w3.org/2003/05/soap-envelope", getNs(nd)); + + assertFalse(service1Invoked); + assertTrue(service2Invoked); + } private String getNs(Node nd) {
