我为wso2创建并部署了一个java服务。我需要在WSO2中创建一个序列,如果java服务给出了某个故障响应,它将故障转移到另一个端点。我想对某些错误代码使用端点功能“suspendOnFailure”和“markForSuspension”,但我没有找到从Java服务中抛出某个错误代码的方法。
有什么方法可以在java中抛出一个错误代码,该错误代码将被端点解释,以便在一段时间内将其标记为“暂停失败”?
我尝试使用makefault介体,但我不知道如何使用此(或其他)介体的错误代码抛出错误,稍后可在“suspendOnFailure”中解释。
下面我尝试使用PGWFAULT服务始终发送错误代码的故障,该代码将由“suspendOnFailure”解释。它不起作用......
<proxy name="CommandClientService" transports="https http" startOnLoad="true"
trace="enable">
<description/>
<target>
<endpoint name="FaultyOne">
<address uri="http://localhost:8282/services/PGWFAULT">
<suspendOnFailure>
<errorCodes>101500</errorCodes>
<initialDuration>1</initialDuration>
<progressionFactor>1.0</progressionFactor>
<maximumDuration>1</maximumDuration>
</suspendOnFailure>
<markForSuspension>
<errorCodes>101500</errorCodes>
<retriesBeforeSuspension>20</retriesBeforeSuspension>
<retryDelay>1</retryDelay>
</markForSuspension>
</address>
</endpoint>
<faultSequence>
<log level="full">
<property name="text" value="Fault sequence activatesNOW"/>
<property name="message" expression="get-property('ERROR_MESSAGE')"/>
</log>
<send>
<endpoint key="errorProvider"/>
</send>
</faultSequence>
</target>
</proxy>
<proxy name="PGWFAULT" transports="https http" startOnLoad="true" trace="enable">
<description/>
<target>
<endpoint key="Local"/>
<outSequence>
<makefault version="soap12">
<code xmlns:soap12Env="http://www.w3.org/2003/05/soap-envelope"
value="soap12Env:Receiver"/>
<reason value="101500"/>
<node/>
<role>asdcasdf</role>
<detail>a fault to be taken into account</detail>
</makefault>
<send/>
</outSequence>
</target>
</proxy>
答案 0 :(得分:0)
暂停端点定义中引用的错误代码基于http错误代码
您可以在中介中设置如下错误代码:
<property name="HTTP_SC" value="500" scope="axis2"/>
有关端点错误处理中的错误代码列表,请参阅http://docs.wso2.org/display/ESB480/Endpoint+Error+Handling
我认为你很容易找到如何在java中设置它...
例如,对于HttpServletResponse对象:
response.sendError(response.SC_NOT_FOUND, "No XXX specified.");