2

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

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

方法2:在API xml中配置handler

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

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

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

提前致谢

4

1 回答 1

0

您提供的链接包含一个扩展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 文档。 https://docs.wso2.com/display/EI600/Securing+APIs

于 2017-09-02T06:43:34.807 回答