2017-09-20 4 views
0

Je suis nouveau chez Enterprise Integrator et je suis peut-être confronté à un problème d'incompréhension. J'ai installé WSO2 EI 6.1.1 sur une machine Linux. J'ai créé un proxy intermédiaire pour une application web basée sur un formulaire très simple et cela fonctionne parfaitement.Filtre médiateur Wso2 Enterprise Integrator et sources externes

Je veux filtrer l'accès en prévioulsy en validant une demande de repos à un serveur externe. Le résultat JSON de cette demande externe doit contenir une valeur spécifique, f.e. {"valid":"yes"}.

J'ai créé une classe Java taht peut faire cet appel (à l'heure actuelle est simplement attribuer statiquement la valeur et le chargement dans une variable):

public class validate extends AbstractMediator { 
    private String validated = "yes"; 

    public boolean mediate(MessageContext context) { 
     System.out.println("Validating Access!!!!"); 
     System.out.println("Validated: " + validated); 

     return true; 
    } 

    public String getValidated() { 
     return validated; 
    } 

    public void setValidated(String validated) { 
     this.validated = validated; 
    } 

Je vois fonctionner correctement. Dans un deuxième temps, j'ai créé un filtre Mediator dans le but d'évaluer cette valeur. J'ai testé ce médiateur avec une expression xpath toujours vraie 1 > 0 Et je vois que les clauses then et else fonctionnent correctement.

Je n'ai pas pu vérifier la valeur obtenue dans le premier médiateur dans le médiateur de filtre. Comment puis-je faire ceci? Qu'est-ce que je rate?

MISE À JOUR:

J'ai trouvé que la façon apparente de la résolution du problème est la définition d'un médiateur de la propriété pour stocker la valeur. J'ai réussi à utiliser une propriété pour prendre la décision dans le filtre mais, comment puis-je définir cette propriété avec une valeur obtenue dans la classe Java?

Répondre

1

Vous avez juste besoin d'ajouter cette ligne dans votre classe java: mc.setProperty ("MyPropertyName", myValue);

Dans votre médiation, utilisez get-property ("MyPropertyName");

+0

L'objet correct est le contexte, donc la commande serait context.setProperty ("MyPropertyName", myValue); mais ça marche. – jordi