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 05:39:59 UTC
svn commit: r698084 - in
/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc:
CxfBcProvider.java CxfBcProviderMessageObserver.java
Author: ffang
Date: Mon Sep 22 20:39:58 2008
New Revision: 698084
URL: http://svn.apache.org/viewvc?rev=698084&view=rev
Log:
[SM-1593]memory leak in cxf bc provider
Modified:
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java?rev=698084&r1=698083&r2=698084&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java Mon Sep 22 20:39:58 2008
@@ -114,6 +114,8 @@
private Bus bus;
private ConduitInitiator conduitInit;
+
+ private Conduit conduit;
private URI locationURI;
@@ -143,13 +145,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);
@@ -484,6 +483,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/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java?rev=698084&r1=698083&r2=698084&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java Mon Sep 22 20:39:58 2008
@@ -59,13 +59,9 @@
String contentType;
- private MessageExchange messageExchange;
-
private CxfBcProvider providerEndpoint;
- public CxfBcProviderMessageObserver(MessageExchange exchange,
- CxfBcProvider providerEndpoint) {
- this.messageExchange = exchange;
+ public CxfBcProviderMessageObserver(CxfBcProvider providerEndpoint) {
this.providerEndpoint = providerEndpoint;
}
@@ -84,6 +80,7 @@
public void onMessage(Message message) {
try {
+ MessageExchange messageExchange = message.getExchange().get(MessageExchange.class);
if (messageExchange.getStatus() != ExchangeStatus.ACTIVE) {
return;
}
@@ -142,7 +139,7 @@
soapMessage.setInterceptorChain(inChain);
inChain.doIntercept(soapMessage);
- setMessageStatus(soapMessage, boi);
+ setMessageStatus(soapMessage, boi, messageExchange);
boolean txSync = messageExchange.getStatus() == ExchangeStatus.ACTIVE
&& messageExchange.isTransacted()
&& Boolean.TRUE.equals(messageExchange
@@ -165,7 +162,8 @@
}
}
- private void setMessageStatus(SoapMessage soapMessage, BindingOperationInfo boi) throws MessagingException {
+ private void setMessageStatus(SoapMessage soapMessage, BindingOperationInfo boi, MessageExchange messageExchange)
+ throws MessagingException {
if (boi.getOperationInfo().isOneWay()) {
messageExchange.setStatus(ExchangeStatus.DONE);
} else if (soapMessage.get("jbiFault") != null