OSB - 处理代理服务中Restful服务的Http错误

时间:2015-02-11 09:23:55

标签: rest osb

我正在从OSB代理服务调用REST服务,如果其余服务响应是有效响应,则该服务正常工作,即没有错误。但是,如果其余服务使用http错误代码(例如400 Bad Request)回复,我除了http错误代码之外无法捕获任何其他内容:

OSB中的

$ fault变量:

<con:fault  xmlns:con="http://www.bea.com/wli/sb/context">
<con:errorCode>BEA-382502</con:errorCode>
<con:reason>
OSB Service Callout action received an error response
</con:reason>
<con:details>
<con1:ErrorResponseDetail   xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
<con1:http-response-code>400</con1:http-response-code>
</con1:ErrorResponseDetail>
</con:details>
<con:location>
<con:node>PipelinePairNode1</con:node>
<con:pipeline>PipelinePairNode1_request</con:pipeline>
<con:stage>stage1</con:stage>
<con:path>request-pipeline</con:path>
</con:location>
</con:fault>

但是其他服务,不仅回复了400 Bad Request,还添加了一条消息:

 <Error>
    <Message>The message header contains an invalid brand code.</Message>
 </Error>

我无法在我的代理服务中处理。有谁知道是否可以在OSB中访问此消息详细信息,还是有限制?

其他服务显然正在发送消息,因为直接通过soap-ui调用它我会得到以下响应:

 HTTP/1.1 400 Bad Request
 Cache-Control: no-cache
 Pragma: no-cache
 Content-Length: 84
 Content-Type: application/xml; charset=utf-8
 Expires: -1
 Server: Microsoft-IIS/8.5
 X-AspNet-Version: 4.0.30319
 X-Powered-By: ASP.NET
 Date: Mon, 09 Feb 2015 16:15:32 GMT


 <Error><Message>The message header contains an invalid brand code.</Message></Error>

由于

3 个答案:

答案 0 :(得分:1)

我发现这是一个OSB错误,如果返回了HTTP错误代码400,如果http内容是&#34;应用程序/ XML&#34;消息被忽略。

甲骨文在上个月底发布了一个修补程序来修复这个问题,我已经测试了它并且它可以运行。我现在可以在$ body变量中获取消息详细信息。

补丁:16986497

答案 1 :(得分:0)

如果我理解你的问题,你想获得除http代码之外的消息错误吗?

我认为您应该在消息流中使用errorHandler,这样您就可以捕获错误并执行任何操作。

答案 2 :(得分:-1)

代理服务操作选择算法无法从请求中确定操作名称或返回无效操作(不在WSDL中的操作或null)。可能的原因包括:

计算操作时发生错误。

操作选择算法返回null。

操作选择算法返回的操作不属于WSDL声明的操作。

Source