当我尝试通过简单的HTTP

时间:2015-09-14 05:12:25

标签: http mule esb connector

刚刚更新到mule esb版本到3.7.0并最终破坏了系统。 我刚创建了简单的HTTP连接器,即使在将最大超时时间设置为2分钟后,也可以从网站加载提要及其抛出超时异常。

示例代码:

<http:request-config name="HTTP_Request_Configuration" host="www.theaggie.org" port="80" basePath="/feed/" doc:name="HTTP Request Configuration">
    <http:proxy host="xxxxx" port="8080" username="xxxx" password="xxxx"/>
</http:request-config>
<flow name="testFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/sfdc" doc:name="HTTP"/>
    <logger message="hjkhh" level="INFO" doc:name="Logger"/>
    <set-property propertyName="User-Agent" value="MuleESB" doc:name="Property" mimeType="application/xml"/>
    <response>
        <http:request config-ref="HTTP_Request_Configuration" path="/" method="GET" doc:name="HTTP"/>
    </response>

</flow>

在上面的代码中,如果我只是将基本路径保持为baspath =&#34; /&#34; ,然后我能够加载整个site.If我使基本路径指向feed作为basePath =&#34; / feed /&#34;然后它会抛出超时异常。这适用于所有拥有rss feed的网站。即使在set属性或直接URL中添加用户代理为mule,它也不起作用。

以下是例外情况:

INFO 2015-09-14 15:01:05,288 [[test] .HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor:hjkhh ERROR 2015-09-14 15:01:16,432 [[test] .HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy:

消息:发送HTTP请求时出错。消息有效内容的类型为:NullPayload 键入:org.mule.api.MessagingException 代码:MULE_ERROR - 2 JavaDoc:http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html 有效负载:{NullPayload}

异常堆栈是: 1.超时超时(java.util.concurrent.TimeoutException)   com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProvider:463(null) 2.发送HTTP请求时出错。消息有效内容的类型为:NullPayload(org.mule.api.MessagingException)   org.mule.module.http.internal.request.DefaultHttpRequester:287(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html

Root异常堆栈跟踪: java.util.concurrent.TimeoutException:超出超时     在com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProvider.timeout(GrizzlyAsyncHttpProvider.java:463)     在com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProvider $ 3.onTimeout(GrizzlyAsyncHttpProvider.java:308)     at org.glassfish.grizzly.utils.IdleTimeoutFilter $ DefaultWorker.doWork(IdleTimeoutFilter.java:398)     at org.glassfish.grizzly.utils.IdleTimeoutFilter $ DefaultWorker.doWork(IdleTimeoutFilter.java:377)     在org.glassfish.grizzly.utils.DelayedExecutor $ DelayedRunnable.run(DelayedExecutor.java:158)     在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:745)

1 个答案:

答案 0 :(得分:0)

我使用您的代码进行了快速测试,但是从request-config中删除了代理,一切正常。

代码:

<http:request-config name="HTTP_Request_Configuration" host="www.theaggie.org" port="80" basePath="/feed/" doc:name="HTTP Request Configuration">
</http:request-config>
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="testFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/sfdc" doc:name="HTTP"/>
    <logger message="hjkhh" level="INFO" doc:name="Logger"/>
    <set-property propertyName="User-Agent" value="MuleESB" doc:name="Property" mimeType="application/xml"/>
        <response>
            <http:request config-ref="HTTP_Request_Configuration" path="/" method="GET" doc:name="HTTP"/>
        </response>

</flow>

然后我打电话给http://localhost:8081/sfdc并从theaggie.org获得了提要。没有代理服务器,这对你有用吗?