2017-02-16 5 views
1

Ich verwende WSO2 APIM 1.10.0 mit meinen benutzerdefinierten Handlern, die auf here verweisen.So ändern Sie die Reihenfolge des WSO2-APIM-Handlers

Ich habe 2 globale benutzerdefinierte Handler:

  1. HeaderSwapHandler
  2. APIInforHandler

Und ich möchte diese zwei benutzerdefinierte Handler-Sequenz wie folgt, wenn die API erstellt.

<handlers> 
    <handler class="com.wso2.header.handler.HeaderSwapHandler"/> 
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler"> 
    <property name="apiImplementationType" value="ENDPOINT"/> 
    </handler> 
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler"/> 
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.APIThrottleHandler"> 
    <property name="policyKey" value="gov:/apimgt/applicationdata/tiers.xml"/> 
    <property name="policyKeyApplication" 
       value="gov:/apimgt/applicationdata/app-tiers.xml"/> 
    <property name="id" value="A"/> 
    <property name="policyKeyResource" 
       value="gov:/apimgt/applicationdata/res-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"/> 
    <handler class="com.wso2.header.handler.APIInforHandler"/> 
</handlers> 

HeaderSwapHandler auf der Oberseite und auf der Unterseite APIInforHandler der Handler.

Gibt es eine Möglichkeit, das zu tun?

bearbeiten und

Meine ursprüngliche velocity_template.xml Gelöst ist wie:

<handlers xmlns="http://ws.apache.org/ns/synapse"> 
<handler class="com.wso2.header.handler.HeaderSwapHandler"/> 
<handler class="com.wso2.header.handler.APIInforHandler"/> 
#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 
     #end 
     #if($apiStatus == 'PROTOTYPED') 
     #end 
     ## end of apiIsBlocked check 
     <handlers> 
     <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler"> 
     <property name="inline" value="INLINE"/> 
     </handler> 
     </handlers> 
     </api> 

einfach ändern:

<handlers xmlns="http://ws.apache.org/ns/synapse"> 
<handler class="com.wso2.header.handler.HeaderSwapHandler"/> 
#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 
<handler class="com.wso2.header.handler.APIInforHandler"/> 
</handlers> 
     #end 
     #end 
     #if($apiStatus == 'PROTOTYPED') 
     #end 
     ## end of apiIsBlocked check 
     <handlers> 
     <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler"> 
     <property name="inline" value="INLINE"/> 
     </handler> 
     </handlers> 
     </api> 

, dass mein Problem lösen könnte.

Antwort

0

In der gleichen Seite, die Sie beziehen, hat es Engaging the custom handler Abschnitt. Es zeigt, wie Sie velocity_template.xml verwenden können, um Ihren neuen Handler mit APIs zu verbinden.

+0

Dank @Bhathiya, nur bearbeiten 'velocity_template.xml 'Datei könnte mein Problem lösen. – MikeWu

Verwandte Themen