WSO2标注中介 - 重复故障触发'超时等待连接'

时间:2013-01-25 09:35:24

标签: wso2esb

我们在ESB 4.5.1中遇到了WSO2标注中介的问题。

假设一个简单的代理:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="EchoWrapper" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <callout serviceURL="http://[MY_HOSTNAME]:8280/services/echo?wsdl" action="urn:echoInt">
            <source xmlns:ns="http://org.apache.synapse/xsd" xpath="$body/*[1]"/>
            <target key="calloutBody"/>
         </callout>
         <property name="RESPONSE" value="true" scope="default" type="STRING"/>
         <header name="To" value="http://www.w3.org/2005/08/addressing/anonymous"/>
         <log level="full"/>
         <send/>
      </inSequence>
   </target>
   <publishWSDL uri="http://[MY_HOSTNAME]/services/echo?wsdl"/>
   <description></description>
</proxy>

..如果我发生错误,即传递一个预期有int的字符串,我将得到一个立即错误响应,一个慢速错误响应,然后端点将变为完全不活动,即使对于有效消息。在日志中,我们看到:

org.apache.commons.httpclient.ConnectionPoolTimeoutException:超时等待连接     在org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGetConnection(MultiThreadedHttpConnectionManager.java:497)     在org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getConnectionWithTimeout(MultiThreadedHttpConnectionManager.java:416)     在org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:153)     在org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)     ...

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

似乎已在其他地方(https://wso2.org/jira/browse/ESBJAVA-922)报告此问题。发生异常的是,在抛出异常时不会清除连接,这实际上意味着这个版本的callout mediator在收到故障或超时时实际上是无用的。

如何解决这个问题的细节 - 我认为非常关键 - 可以在上面的链接中找到,只需添加一行来清理catch块中的连接。