You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2018/04/18 07:46:00 UTC

[jira] [Updated] (CAMEL-12451) Memory leak: camel-cxf componet don't release UoW in case of using "robust" property

     [ https://issues.apache.org/jira/browse/CAMEL-12451?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen updated CAMEL-12451:
--------------------------------
    Priority: Minor  (was: Major)

> Memory leak: camel-cxf componet don't release UoW  in case of using "robust" property
> -------------------------------------------------------------------------------------
>
>                 Key: CAMEL-12451
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12451
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-cxf
>    Affects Versions: 2.20.2, 2.20.3
>            Reporter: Filippov Mihail
>            Priority: Minor
>
> In case of using "org.apache.cxf.oneway.robust" property camel-cxf component doesn't release UoW that leads to huge memory leak. I think it's relied with  the feature of output chain of cxf framwork which doesn't invoke additional interceptors in case of oneway operation.
> in other words, this code is not called:
> https://github.com/apache/camel/blob/master/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
>  
> {code:java}
> private class UnitOfWorkCloserInterceptor extends AbstractPhaseInterceptor<Message> {
>    public UnitOfWorkCloserInterceptor() {
>       super(Phase.POST_LOGICAL_ENDING);
> }
> @Override
> public void handleMessage(Message message) throws Fault {
>       Exchange cxfExchange = null;
>       if ((cxfExchange = message.getExchange()) != null) {
>          org.apache.camel.Exchange exchange =             cxfExchange.get(org.apache.camel.Exchange.class);
>          if (exchange != null) {
>             doneUoW(exchange);
>    }
>    }
>    }
> }
> {code}
> minimal example:
>  
>  
> {code:java}
> <cxf:cxfEndpoint id="soap_in1" 
>    address="/service1" 
>    xmlns:tns="urn:api:service1" 
>    wsdlURL="wsdl/service1.wsdl" 
>    serviceName="tns:service1" 
>    endpointName="tns:HTTP_Port">
>    <cxf:properties>
>       <entry key="dataFormat" value="PAYLOAD"/>
>       <entry key="org.apache.cxf.oneway.robust" value="true"/>
>    </cxf:properties>
> </cxf:cxfEndpoint>
> <camelContext xmlns="http://camel.apache.org/schema/blueprint"   id="context1">
>    <route id="loadTest1">
>       <from uri="cxf:bean:soap_in1"/>
>       <to uri="log:end"/>
>    </route> 
> </camelContext>
> {code}
>  
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)