如何为 wso2 EI 6.1.1 中的特定 API 配置自定义突触处理程序

How to Configure custom synapsis handler for a specific API in wso2 EI 6.1.1

我需要将我的自定义突触处理程序 映射到 WSO2 EI 6.1.1 中的特定 API。 我尝试了以下两种不同的方法来配置自定义突触处理程序以映射 API

方法一:在EI_HOME/conf/synapse-handlers.xml配置handler 这样处理程序适用于所有 APIs。 参考:https://docs.wso2.com/display/EI600/Writing+a+Synapse+Handler

方法二:在API中配置handler xml

......</resource>
    <handlers>
       <handler class="org.test.TestHandler1"/>
    </handlers>
 </api>

这样会导致启动EI服务器时出错。 看起来方法 2 在 WSO2 ESB 上是可行的,而不是 WSO2 EI

正在寻找一种方法来做到这一点。 注意:我正在扩展 AbstractSynapseHandler 以创建自定义突触处理程序

提前致谢

您提供的 link 包含扩展 org.apache.synapse.AbstractSynapseHandler 的示例。但是如果你想要一个 API 级别的处理程序,你的处理程序应该实现 org.apache.synapse.rest.Handler 而不是扩展 org.apache.synapse.AbstractSynapseHandler . 下面是一个示例处理程序,它应该适用于您的情况。

import java.util.Map;
import org.apache.synapse.MessageContext;
import org.apache.synapse.rest.Handler;

public class ReqResponseHandler implements Handler {

    @Override
    public void addProperty(String s, Object o) {
    }

    @Override
    public Map<?, ?> getProperties() {
        return null;
    }

    @Override
    public boolean handleRequest(MessageContext synapsisCtx) {
        System.out.println("**********Handling Request*********");
        return true;
    }

    @Override
    public boolean handleResponse(MessageContext synapsisCtx) {
        System.out.println("**********Handling Response*********");
        return true;
    }
}

您在 API xml 中配置处理程序的方式是正确的。 (但是,请注意,您不能通过 Web 界面向 API 添加处理程序。)

有关更多详细信息,请访问下面的 WSO2 文档 link。 https://docs.wso2.com/display/EI600/Securing+APIs