首页 文章

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

提问于
浏览
0

我正在从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 回答

  • -1

    我刚刚发现这是一个OSB错误,如果返回HTTP错误代码400,如果http-content是“Application / XML”,则忽略该消息 .

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

    Patch: 16986497

  • 0

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

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

  • 1

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

    计算操作时发生错误 .

    操作选择算法返回null .

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

    Source

相关问题