2017-09-29 4 views
0

Ich habe WSO2 EI 6.1.1 auf einer Linux-Box installiert. Ich habe einen Pass-Through-Proxy für eine Rest-Schnittstelle erstellt, die sowohl GET- als auch PUT-Anfragen erhält. Ich habe einen Java-Klasse Mediator gesetzt, die einige deicisions basierend auf einem Parameter in der URL der Anfragen enthalten machen sollte:wso2 Enterprise Integrator Klassenfilter Parameter erhalten

http://xx.xx.xx.xx:8280/services/app/url?token=ABCD 

Als ich für den Kontext der Anfrage aus der Klasse frage, kann ich den Inhalt sehen des Umschlags und der Anfrage.

System.out.println("Context: \n " + context.getMessageString()); 

To : /services/app/url?token=ABCD 
MessageID : urn:uuid:431940fd-201e-43a3-aad1-0ca5e36297dd 
Body : <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> 

Wie kann ich den Wert des Token-Parameters erhalten? Ich habe es noch nie versucht.


UPDATE:

Dies ist die aktuelle Reihenfolge:

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="jsonvalidate" xmlns="http://ws.apache.org/ns/synapse"> 
    <log> 
     <property expression="get-property('query.param.token')" name="token"/> 
    </log> 
    <property name="pass" scope="default" type="STRING" value="yes"/> 
    <property expression="get-property('query.param.token')" 
     name="token" scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/> 
    <class name="authzMediator.validate"> 
     <axis2ns15:property name="validated" value="1" xmlns:axis2ns15="http://ws.apache.org/ns/synapse"/> 
     <axis2ns16:property name="validated1" value="yes" xmlns:axis2ns16="http://ws.apache.org/ns/synapse"/> 
    </class> 
    <log category="DEBUG"> 
     <property expression="get-property('token')" name="token1" xmlns:ns="http://org.apache.synapse/xsd"/> 
    </log> 
    <filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('pass') = 'yes'"> 
     <then> 
      <class name="authzMediator.trace"> 
       <axis2ns17:property name="msg" value="YES" xmlns:axis2ns17="http://ws.apache.org/ns/synapse"/> 
      </class> 
     </then> 
     <else> 
      <class name="authzMediator.trace"> 
       <axis2ns18:property name="msg" value="NO" xmlns:axis2ns18="http://ws.apache.org/ns/synapse"/> 
      </class> 
      <drop/> 
     </else> 
    </filter> 
</sequence> 

Was ich sehe, ist, dass im ersten Schritt (log) ich sehen:

[EI-Core] INFO - LogMediator To: /services/lsrest/clients/jordipc/3/0/14?token=patata, MessageID: urn:uuid:3b08226e-4a46-474a-8d7c-c4c786e51b4c, Direction: request, token = null 

Antwort

0

Das Endergebnis auf eine doppelte Wirkung beruhte:

  1. eine Eigenschaft Vermittler mit einem expresion Wert definieren $url:token und den Namen „Token ".

  2. In der Klasse Mediator nennen diese Funktion context.getProperty("token")

1

Sie kann mit get-property ('uri.var.token') [1] auf den Wert des Token-Parameters zugreifen.

Es gibt zwei Möglichkeiten, diesen Wert zu verwenden.

(1) Übergeben Sie Token als Parameter an den Klassenmediator. Folgen Sie [2] für ein Beispiel.

(2) Greifen Sie auf diese Eigenschaft in der Klassenmediator mediate() Methode wie folgt zu.

token = synCtx.getProperty('uri.var.token'); 

[1] https://docs.wso2.com/display/ESB490/HTTP+Endpoint [2] https://docs.wso2.com/display/ESB490/Class+Mediator

+0

Ich bin nicht sicher, ob ich es richtig mache. Ich habe eine Eigenschaft mit dem Namen token und expresion (get-property ('uri.var.token')) erstellt und versucht, den Wert aus der Klasse mit (context.getProperty ("token")) zu erhalten. Ich bekomme NULL-Wert. Was ist falsch? – jordi

+0

Können Sie das uri.var.token protokollieren, bevor Sie an den Klassenmediator übergeben werden, um zu sehen, ob es zuerst richtig eingestellt ist? – maheeka

+0

INFO - LogMediator An:/Rest/Pfad? Token = ppttpptt, MessageID: Urn: Uuid: 84909eeb-962b-4ac9-9c86-18cf07ce976c, Richtung: Anfrage, Token = null – jordi

Verwandte Themen