2014-11-06 196 views
0

我有一個端點,其錯誤響應必須被攔截,記錄或轉換。我列出了一個故障序列,並且記錄了所有可能的錯誤。但我無法獲取500內部服務器錯誤截獲。有人可以幫助我嗎?如何攔截500 WSO2中的內部服務器錯誤ESB

請參閱下文。

<endpoint xmlns="http://ws.apache.org/ns/synapse"> 
<address uri="https://<Hostname/WebServiceName>" format="soap11"> 
    <suspendOnFailure> 
    <progressionFactor>1.0</progressionFactor> 
    </suspendOnFailure> 
    <markForSuspension> 
    <errorCodes>500</errorCodes> 
    <retriesBeforeSuspension>0</retriesBeforeSuspension> 
    <retryDelay>0</retryDelay> 
    </markForSuspension> 
    <timeout> 
    <duration>100</duration> 
    <responseAction>fault</responseAction> 
    </timeout> 
    <enableSec policy="conf:/repository/esb/policies/Sign-UT-Policy.xml"/> 
</address> 
</endpoint> 

錯誤日誌 TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "HTTP/1.1 500 Internal Server Error[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "Set-Cookie: CSQA9IBCOOKIE=R2172309488; path=/[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "Content-Type: application/json[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "X-Powered-By: Servlet/2.5 JSP/2.1[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "Date: Thu, 06 Nov 2014 14:21:08 GMT[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "Server: WSO2-PassThrough-HTTP[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "Transfer-Encoding: chunked[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "Connection: Keep-Alive[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "1f[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "{"getMyClsScheduleResponse":""}[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "0[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [ESB] [2014-11-06 09:21:08,790] DEBUG {org.apache.synapse.transport.http.wire} - << "[\r][\n]" {org.apache.synapse.transport.http.wire}

如上所示,我看到一個500內部服務器錯誤在日誌中,但其不會被髮送到故障序列。

任何想法,將幫助..

感謝 Kranthi

回答

1

我們需要使用API​​/Proxy中的以下參數將http錯誤代碼發回故障序列。

<inSequence> 
     <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true" scope="default" type="STRING"/> 
</inSequence> 

在端點超時設置的參數<responseAction>是不是你的錯序列的名稱,它只是提到了控制是否應該被髮送到故障序列或丟棄。

<timeout> 
<duration>100</duration> 
<responseAction>fault</responseAction> 

地方有被路由在代理

<proxy xmlns="http://ws.apache.org/ns/synapse" name="StudentDashboardAcademics" transports="https http" startOnLoad="true" trace="disable"> 
     <target faultSequence="StudashFault"> 
<endpoint key="conf:/repository/esb/endpoints/CSIB_Dynamic.xml"/> 
     <inSequence> 
      <property name="Accept" expression="$trp:Accept" scope="default" type="STRING"/> 
      <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true" scope="default" type="STRING"/> 
     </inSequence> 

祝大家與編碼所提到的故障序列的名字......

最良好的祝願 Kranthi

0

加入你的錯序列代理,看看你是否能趕上我在過去幾個月裏學到的錯誤或不