WSO2中介器向用户返回错误消息

WSO2中介器向用户返回错误消息,wso2,wso2esb,wso2-am,Wso2,Wso2esb,Wso2 Am,我目前正在尝试在WSO2 API管理器中编写java中介,以便在将消息发送到代理之前执行一些处理。 正常用例工作正常,但我遇到了一些异常问题 我希望能够从中介器向用户发送一条消息,其中包含一条消息和一个HTTP状态代码,但我看不到一种方法 import org.apache.synapse.mediators.transform.PayloadFactoryMediator; public class MessageMediator extends PayloadFactoryMediator

我目前正在尝试在WSO2 API管理器中编写java中介,以便在将消息发送到代理之前执行一些处理。 正常用例工作正常,但我遇到了一些异常问题

我希望能够从中介器向用户发送一条消息,其中包含一条消息和一个HTTP状态代码,但我看不到一种方法

import org.apache.synapse.mediators.transform.PayloadFactoryMediator;

public class MessageMediator extends PayloadFactoryMediator
{
    @Override
    public boolean mediate(org.apache.synapse.MessageContext synapseMessageContext)
    {
        boolean success = true;

        try{
            .... some processing
        }
        catch(Exception e)
        {
            success = false;
            handleException(e.getMessage(), e, synapseMessageContext);
            //write message back to user
        }

        return success;
    }
}
这是我的代理:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="AMQPProxy"
       transports="https http"
       startOnLoad="true"
       trace="enable">
   <description/>
   <target>
      <endpoint>
        <default />
      </endpoint>
      <inSequence>
         <sequence key="MessageMediator"/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </target>
</proxy>

向用户返回错误的正确步骤是什么


谢谢

如果您在不退出wso2 esb调用另一个服务的情况下从insequence本身返回错误,您可以按以下方式执行:

<payloadFactory media-type="json">
   <format>{"Error":{"errorType":"BusinessError","details":"some details"}}</format>
   <args/>
</payloadFactory>
<header name="To" scope="default" action="remove"/>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<property name="HTTP_SC" value="400" scope="axis2" type="STRING"/>
<property name="messageType" expression="$trp:Accept" scope="axis2" type="STRING"/>
<send/>

{“Error”:{“errorType”:“BusinessError”,“details”:“some details”}

如果您要从outsequence返回错误,您可以使用makefault。请参见此处,您可以尝试在insequence中使用fault mediator,我还没有尝试过,但在发送insequence时,您需要使用