2015-01-14 79 views
0

我想弄清楚如何自定义部署到API实现的Synapse引擎中的默认API处理程序集。WSO2 API管理器自定义处理程序

体系结构overview()的'API Handler'部分显示了API的部署如何导致由标准的一组处理程序组成的Synapse配置。自定义说明指出,要更改此设置,请转到管理控制台中的源视图并更改xml内容。

虽然有效,但这意味着要自定义标准的处理程序集(例如,包含额外的/自定义的策略实施步骤),我需要在该配置中手动更改每个部署的API。

是否有一个地方可以配置API Manager,以便自动向通过它部署的任何API添加其他自定义处理程序,就像它自动添加处理程序,如身份验证策略,限制策略等一样。通过这种方式,我可以强制执行符合公司标准的规定,并且不要求每个API都单独编辑,也不要强制API发布者使用序列来添加其他行为。

从检查代码,看来该模块可以是一个建立突触配置用于API:

.//components/apimgt/org.wso2.carbon.apimgt.impl/1.2.3 /src/main/java/org/wso2/carbon/apimgt/impl/APIProviderImpl.java

如果我想添加额外的逻辑 - 是为了添加该行为而重写的适当模块,或者是否存在一个更简单,不太干扰的方式来做到这一点?

回答

0
  1. 您的处理程序添加到的dropins
  2. AM_HOME /库/资源/ api_templates/velocity_template.xml并更改以下

#if($handlers.size() > 0) 
     <handlers xmlns="http://ws.apache.org/ns/synapse"> 
      #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 


<handlers> 
     **<handler class="com.custom.api.CustomHandler"/>** 
     <handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.APIThrottleHandler"> 
     <property name="id" value="A"/> 
     <property name="policyKey" value="gov:/apimgt/applicationdata/tiers.xml"/> 
     </handler> 
     <handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageHandler"/> 
     <handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtGoogleAnalyticsTrackingHandler"> 
     <property name="configKey" value="gov:/apimgt/statistics/ga-config.xml"/> 
     </handler> 
     <handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/> 
    </handlers> 

这将您的自定义处理程序(<handler class="com.custom.api.CustomHandler"/>)添加到自动所有的API和上述其他的默认处理程序。