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 2008/09/23 07:52:25 UTC

svn commit: r698097 - in /servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc: CxfBcProvider.java CxfBcProviderMessageObserver.java

Author: ffang
Date: Mon Sep 22 22:52:25 2008
New Revision: 698097

URL: http://svn.apache.org/viewvc?rev=698097&view=rev
Log:
[SM-1593]memory leak in cxf bc provider

Modified:
    servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
    servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java

Modified: servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java?rev=698097&r1=698096&r2=698097&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java (original)
+++ servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java Mon Sep 22 22:52:25 2008
@@ -120,6 +120,7 @@
     private Bus bus;
 
     private ConduitInitiator conduitInit;
+    private Conduit conduit;
 
     private URI locationURI;
 
@@ -149,13 +150,10 @@
             ei.setAddress((String) newDestinationURI);
         }
         
-        Conduit conduit = conduitInit.getConduit(ei);
-        CxfBcProviderMessageObserver obs = new CxfBcProviderMessageObserver(
-                exchange, this);
-        conduit.setMessageObserver(obs);
         Message message = ep.getBinding().createMessage();
         message.put(MessageExchange.class, exchange);
         Exchange cxfExchange = new ExchangeImpl();
+        cxfExchange.put(MessageExchange.class, exchange);
 
         message.setExchange(cxfExchange);
         cxfExchange.setOutMessage(message);
@@ -466,6 +464,9 @@
                         ConduitInitiatorManager.class);
                 conduitInit = conduitMgr.getConduitInitiator(ei
                         .getTransportId());
+                conduit = conduitInit.getConduit(ei);
+                CxfBcProviderMessageObserver obs = new CxfBcProviderMessageObserver(this);
+                conduit.setMessageObserver(obs);
                 super.validate();
             }
         } catch (DeploymentException e) {

Modified: servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java?rev=698097&r1=698096&r2=698097&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java (original)
+++ servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java Mon Sep 22 22:52:25 2008
@@ -58,13 +58,10 @@
 
     String contentType;
 
-    private MessageExchange messageExchange;
 
     private CxfBcProvider providerEndpoint;
 
-    public CxfBcProviderMessageObserver(MessageExchange exchange,
-            CxfBcProvider providerEndpoint) {
-        this.messageExchange = exchange;
+    public CxfBcProviderMessageObserver(CxfBcProvider providerEndpoint) {
         this.providerEndpoint = providerEndpoint;
     }
 
@@ -83,6 +80,7 @@
 
     public void onMessage(Message message) {
         try {
+            MessageExchange messageExchange = message.getExchange().get(MessageExchange.class);
             if (messageExchange.getStatus() != ExchangeStatus.ACTIVE) {
                 return;
             }