WSO2生成并使用自定义错误代码

时间:2013-12-10 14:40:05

标签: java wso2 wso2esb wso2carbon

我为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>

1 个答案:

答案 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.");