我有一个简单的流,它有一个http入站端点。我正在尝试使用http出站并收到以下异常。
我可以直接从SOAP UI使用相同的出站。但是,无法通过Mule流程打电话。
java.io.OptionalDataException(org.apache.commons.lang.SerializationException)
来自端点的响应...内部服务器错误,代码:500
INFO 2014-02-17 07:16:41,234 [[updatecustomer].connector.http.mule.default.receiver.02]
org.mule.api.processor.LoggerMessageProcessor: Logger ...in main thread
java.io.OptionalDataException (org.apache.commons.lang.SerializationException)
希望这个原始的xml有助于识别问题。
来自SOAP UI的原始XML输入:
POST http://localhost:8080/foo3 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 2044
Host: localhost:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
来自SOAP UI输出的原始XML(直接命中端点):
HTTP/1.1 200 OK
Date: Tue, 18 Feb 2014 06:10:56 -0600
Server: Mule Core/3.4.0
Content-Type: text/xml; charset=UTF-8
X-MULE_SESSION: sjkfsdhbbzzzxxxxxxx ....
http.method: POST
X-MULE_ENCODING: UTF-8
Transfer-Encoding: chunked
Connection: close
通过Mule流程从SOAP UI获取原始XML:
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
Date: Tue, 18 Feb 2014 06:09:49 -0600
Server: Mule EE Core Extensions/3.4.1
http.status: 500
X-MULE_SESSION: sdkfasdfgsdkgfbsdfkxxxxxxxhshduiaodudyy.....
X-MULE_ENCODING: UTF-8
Content-Length: 78
Connection: close
答案 0 :(得分:2)
尝试为HTTP连接器设置NullSessionHandler:
<http:connector name="NoSessionConnector">
<service-overrides sessionHandler="org.mule.session.NullSessionHandler" />
</http:connector>
答案 1 :(得分:0)
这听起来好像您向出站发送了一些不正确的标题或数据,并且它以500错误响应。一个典型的问题是使用不正确的Content-Type标头,因此您可能会在端点之前遗漏<set-property propertyName="Content-Type" value="text/xml;charset=UTF-8"/>
之类的内容。同样从SoapUI添加soap标头SOAPAction
,并确保您的出站HTTP端点是POST。
对于调试,我建议您尝试使用Postman或其他一些简单的HTTP客户端来获得成功的响应,然后在Mule中设置完全相同的标头/数据。在出站端点之前使用记录器,以确保您的消息正文与您在SoapUI / Postman中成功使用的消息正文相匹配。此外,在尝试将HTTP响应映射到任何内容之前,请记录HTTP响应,因此您知道您没有使用无效数据。如果您有开发人员访问您正在呼叫的服务,请查看日志中的内容。