CXF HTTP连接池CLOSE_WAIT

时间:2016-09-12 11:10:33

标签: java web-services logging apache-camel cxf

我正在使用CXF 3.0.6

我正在使用ProducerTemplate调用路线

我的驼峰上下文中有一个cxf端点如下所示..(TEST_ENDPOINT是一个实际的端点)

<route id="invokePostRestService">
        <from uri="direct:invokeWS" />
        <log message=" ${body}" />
       <to uri="cxf://{{TEST_ENDPOINT}}?dataFormat=payload&amp;loggingFeatureEnabled=true" />
       <log message=" ${body}" />
</route>


<http-conf:conduit name="*.http-conduit">
                <http-conf:client ConnectionTimeout="30000"
                        ReceiveTimeout="30000"  MaxRetransmits="1"
                        AllowChunking="false" />
        </http-conf:conduit>

        <bean id="systemProps"
                class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
                <property name="targetObject" value="#{@systemProperties}" />
                <property name="targetMethod" value="putAll" />
                <property name="arguments">
                        <util:properties>
                                <prop key="http.maxConnections">11</prop>

                        </util:properties>
                </property>
        </bean>

我认为CXF日志记录在某种程度上干扰了Jetty / resources / log4j.xml中的log4j.xml,当我在log4j.xml中将日志级别设置为ERROR时,我看到CLOSE_WAIT堆积并且http.maxConnections超过100+ (事实上​​它只是11,配置)

当我在log4j.xml中将记录模式设置为INFO时,一切都按预期工作,http.maxConnections为11!这是预期的,没有close_waits!

调试后我发现logg等级在“org.apache.camel.processor.interceptor.BacklogDebugger”中是INFO,尽管log4j.xml中有ERROR,这可能是导致这个问题的原因吗?

感谢任何帮助...

1 个答案:

答案 0 :(得分:0)

这可能有助于遇到同样问题的其他人。

调试后我发现当初始化camel上下文时,内部使用BacklogTracer的Logging拦截器(Trace拦截器)也被初始化,内部使用 INFO 作为日志记录级别。

所以,在上下文xml中添加cxf:bus,如下所示,引用 -

<div class="form-group">
    <label for="name">Name</label>
    <input type="text" class="form-control" id="name">
</div>
<button type="button" class="btn btn-default" (click)="save()">Save</button>

并在log4j.xml中添加此内容,

http://cxf.apache.org/docs/bus-configuration.htmlc
<cxf:bus>
        <cxf:features>
            <cxf:logging />
        </cxf:features>
</cxf:bus>

希望这会有所帮助..