如何在wso2 EI 6.1.1中为特定API配置自定义synapsis处理程序

时间:2017-08-29 07:04:38

标签: wso2esb synapse wso2ei

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

进行映射

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

方法2:在API xml中配置处理程序

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

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

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

提前致谢

1 个答案:

答案 0 :(得分: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