You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2010/06/01 08:52:22 UTC

svn commit: r949938 - /servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java

Author: ffang
Date: Tue Jun  1 06:52:22 2010
New Revision: 949938

URL: http://svn.apache.org/viewvc?rev=949938&view=rev
Log:
[SMXCOMP-753]ensure clean up dead destination before init cxf se endpoint

Modified:
    servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java

Modified: servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java?rev=949938&r1=949937&r2=949938&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java (original)
+++ servicemix/components/engines/servicemix-cxf-se/trunk/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java Tue Jun  1 06:52:22 2010
@@ -45,6 +45,7 @@ import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.BusException;
 import org.apache.cxf.aegis.databinding.AegisDatabinding;
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.binding.soap.SoapVersion;
@@ -275,6 +276,7 @@ public class CxfSeEndpoint extends Provi
             if (getPojoEndpoint() != null) {
                 sf.setEndpointName(getPojoEndpoint());
             }
+            cleanUpDeadDestination();
             server = sf.create();
             server.getEndpoint().getInInterceptors().addAll(getInInterceptors());
             server.getEndpoint().getInFaultInterceptors().addAll(getInFaultInterceptors());
@@ -352,6 +354,7 @@ public class CxfSeEndpoint extends Provi
         
         // prepare the CXF server in case of JAXB
         if (!isUseAegis()) {
+            cleanUpDeadDestination();
             endpoint.publish(address);
             server = endpoint.getServer();
         }
@@ -516,6 +519,21 @@ public class CxfSeEndpoint extends Provi
         return ((CxfSeComponent)getServiceUnit().getComponent()).getBus();
     }
     
+    private void cleanUpDeadDestination() throws DeploymentException {
+        JBITransportFactory jbiTransportFactory;
+        try {
+            jbiTransportFactory = (JBITransportFactory)getBus()
+                .getExtension(ConduitInitiatorManager.class).getConduitInitiator(CxfSeComponent.JBI_TRANSPORT_ID);
+        } catch (BusException e) {
+            throw new DeploymentException(e);
+        }
+        if (jbiTransportFactory != null 
+                && getPojoService() != null 
+                && getPojoInterfaceName() != null) {
+             jbiTransportFactory.removeDestination(getPojoService().toString() + getPojoInterfaceName().toString());
+        }
+    }
+    
     private QName findOperation(NormalizedMessage nm, Message message, MessageExchange exchange)
         throws TransformerException, ParserConfigurationException, IOException, SAXException {
         // try to figure out the operationName based on the incoming message