2013-04-20 195 views
3

如何使用代理的faultsequence在ESBWSO2:ESB faultsequence

我想,當發生在端點的故障使用faultsequence。例如,我停止使用jconsole的service1,並希望在呼叫代理服務時將消息路由到service2。但是當我使用的soapUI調用代理就顯示故障此消息:系統試圖訪問無效的服務..

<target> 
    <inSequence > 
    <send> 
     <endpoint name="cal" >  
     <address uri="http://localhost:9763/services/service1/"/> 
     </endpoint> 
    </send> 
    </inSequence> 
    <faultSequence> 
    <log level="custom"> 
     <property name="text" value="An unexpected error occured for service"/> 
     <property name="message" expression="get-property('ERROR_MESSAGE')"/> 
    </log> 
    <send> 
     <endpoint> 
      <address uri="http://localhost:9763/services/service2/"/> 
     </endpoint> 
    </send> 
    </faultSequence> 

請指導我!

回答

0

我相信你的確切場景是你的主要終點的一部分,如果它表現出你需要將消息路由到次要終點。

對您的實施的正確方法是不使用故障順序正確的方法是使用故障轉移端點。你可以在[1] [2]找到參考文件。

有關示例,請參閱「示例53:3個端點之間的故障轉移發送」[3]。

[1]。 http://wso2.org/project/esb/java/3.0.1/docs/endpoint_guide.html#FoEp [2]。 http://docs.wso2.org/wiki/display/ESB403/Failover+Endpoint [3]。 http://wso2.org/project/esb/java/3.0.1/docs/samples/endpoint_mediation_samples.html

謝謝, Dharshana。

+0

謝謝親愛的Dharshana。是的,這是正確的你的假設,但我的次要端點的地址是動態的,我需要一個新的序列(錯誤序列),它加載類中介,並將消息路由到由中介指定的新目標。所以我認爲需要一個錯誤序列。這是真的嗎?因爲故障轉移中的端點是靜態的! – 2013-04-21 06:04:27

+0

可以在故障序列內調用另一個序列。對於您的情況,您需要使用故障順序。您可以設置targer故障序列如下<目標faultSequence =「測試」> 那麼你就可以實現測試序列 – Dharshana 2013-04-21 21:40:38

1

當端點1處於非活動狀態時,它會返回肥皂故障,並且您希望它轉到故障序列。但是,此時故障順序被視爲響應併發送給客戶端(soap ui)。

在WSO2 ESB 4.5.0以後,增加了一個新屬性FORCE_ERROR_ON_SOAP_FAULT。通過設置這個屬性,肥皂故障將被引導到故障順序。當您處於故障序列時(例如調用另一個序列),可以執行下一個邏輯。

請參閱[1]以獲取示例代理服務。

[1] http://maharachchi.blogspot.com/2012/09/now-you-can-send-soapfaults-to-fault.html

+0

內新的端點邏輯難道這迎合您的需求? – 2013-04-22 18:50:10