【问题标题】:Programmatically add custom handler in WSO2 API Manager以编程方式在 WSO2 API Manager 中添加自定义处理程序
【发布时间】:2015-07-17 20:15:33
【问题描述】:

我通过自动化流程创建和订阅新 API,该流程分别使用 WSO2 API Manager 的 PublisherStore HTTP API。我有自定义处理程序,然后通过编辑<APIM_HOME>/repository/deployment/server/synapse-configs/default/api 中的 XML 文件映射到我的 API。

有没有办法以编程方式将处理程序映射到新创建的 API,这样我就不必手动编辑 XML?换句话说,一个 API 或其他方法来查看 API 的当前处理程序,并添加/删除?

【问题讨论】:

    标签: wso2 wso2-am


    【解决方案1】:

    我假设您不想为所有 API 手动编辑 API XML 以使用自定义处理程序。相反,您希望能够在发布 API 时自动为所有 API 使用处理程序。您可以通过编辑 $APIM_HOME/repository/resources/api_templates/velocity_template.xml 来完成。这是一个模板文件,它决定默认情况下哪些处理程序与 API 交互。在这个文件的最后,你会找到一个 handlers 部分。您需要编辑此文件并在其中添加您的处理程序,如下所示。

    ## print the handlers
    #if($handlers.size() > 0)
    <handlers xmlns="http://ws.apache.org/ns/synapse">
        <handler class="org.wso2.carbon.samples.handlers.MyCustomHandler"/>
        #foreach($handler in $handlers)
        <handler xmlns="http://ws.apache.org/ns/synapse" class="$handler.className">
            #if($handler.hasProperties())
                #set ($map = $handler.getProperties() )
                #foreach($property in $map.entrySet())
                    <property name="$!property.key" value="$!property.value"/>
                #end
            #end
        </handler>
        #end
    </handlers>
    #end
    

    如您所见,我添加了我的处理程序org.wso2.carbon.samples.handlers.MyCustomHandler。这就是你应该做的。如果您现在创建和发布 API,MyCustomHandler 将自动与您的 API 交互。但是,即使您更新 velocity_templates.xml,已发布的 API 也不会产生影响。您需要重新发布它们才能获得效果。

    【讨论】:

      【解决方案2】:

      就我而言,我有许多处理程序和许多 API。并非所有处理程序都适用于所有 API,也没有处理程序适用于所有 API。

      我通过在部署到 API Manager 的 Carbon 实例的 WAR 文件中创建独立的 HTTP API 解决了这个问题。之后调用 WSO2 Publisher API 的同一服务调用我的 HTTP API。 API 将处理程序类名称作为参数,并将适当的元素注入本地文件系统上的 API 定义 XML 文件(我使用 JDOM)。 API Manager 会自动检测并重新加载修改后的 XML,一切顺利。

      【讨论】:

      • 这很有趣。您能在这里分享您的自定义代码吗?
      猜你喜欢
      • 2022-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多