2012-09-06 5 views
1

bonjour je suis le médiateur de la classe suivante créée par Carbon Studio:WSO2 esb Classe Médiateur

package my.mediation; 

    import org.apache.synapse.MessageContext; 
    import org.apache.synapse.mediators.AbstractMediator; 

    public class Auth extends AbstractMediator { 


     public boolean mediate(MessageContext context) { 
      // TODO Implement your mediation logic here 

      context.setProperty("message","hello world!"); 

      return true; 
     } 

} 

Et la séquence est comme:

<inSequence xmlns="http://ws.apache.org/ns/synapse"> 
    <property name="message" value="nothing" scope="default" /> 
    <class name="my.mediation.Auth" /> 
    <log> 
     <property name="Message******" expression="get-property('message')" /> 
    </log> 
</inSequence 

> Le problème est qu'au lieu d'imprimer un message: "HelloWorld" il imprime toujours le texte "rien" ... Une suggestion?

Répondre

3

Votre scénario est parfaitement valide et votre configuration semble également être bonne. J'ai lié votre scénario et cela fonctionne très bien pour moi.

Voici mes configurations.

Mediator Classe:

package org.wso2.mediator; 

import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator; 

public class SampleMediator extends AbstractMediator { 

    public boolean mediate(MessageContext context) { 
     context.setProperty("Message", "HelloWorld!"); 
     return true; 
    } 
} 

Mon service proxy:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="SimpleProxy" 
    statistics="disable" trace="disable" transports="http,https"> 
    <target> 
     <inSequence> 
      <log category="INFO" level="simple" separator=","/> 
      <property action="set" name="Message" scope="default" 
       type="STRING" value="DefaultMessage"/> 
      <class name="org.wso2.mediator.SampleMediator"/> 
      <log category="INFO" level="simple" separator=","> 
       <property expression="get-property('Message')" name="===========Message Value=========="/> 
      </log> 
      <drop/> 
     </inSequence> 
    </target> 
</proxy> 

Quand j'invoque le service proxy sans le médiateur de la classe, il imprime

INFO - LogMediator To: /services/SimpleProxy.SimpleProxyHttpSoap12Endpoint,WSAction: urn:mediate,SOAPAction: urn:mediate,MessageID: urn:uuid:81150094-cbc4-44f7-83eb-251e28149564,Direction: request,===========Message Value========== = DefaultMessage 

et quand j'invoque la service proxy avec le médiateur de classe, il imprime,

INFO - LogMediator To: /services/SimpleProxy.SimpleProxyHttpSoap12Endpoint,WSAction: urn:mediate,SOAPAction: urn:mediate,MessageID: urn:uuid:e3a04341-907c-40fe-9f58-5a10d2ce346a,Direction: request,===========Message Value========== = HelloWorld! 

Espérons que cela aide!

Harshana

1

Le problème est basé dans les log4j.properties. Votre classe est dans le paquet my.mediation; qui n'existe pas dans log4j.properties. Vous devez aller aux YOUR_WSO2/lib/log4j.properties et ajoutez le niveau du journal de votre espace de noms/package:

... 
log4j.logger.org.wso2=INFO 
log4j.logger.my.mediation=DEBUG 

Ici, vous voyez aussi pourquoi l'exemple de Harashana a travaillé - il a juste changé le package à org.wso2 - que vous ne devriez pas faire pour vos propres médiateurs personnalisés.

+0

Je ne suis pas d'accord avec vous :-). Le package que nous utilisons pour mediator n'a pas d'importance ici car nous ne consignons pas ce message du médiateur lui-même. La tâche du médiateur consiste à définir une valeur pour une propriété qui n'a rien à voir avec la journalisation. Par conséquent, Non. Ce n'est pas le problème ici. Si vous remplacez mes configurations par le nom du paquet de nuvio, ma configuration fonctionnera sans erreur. Donc, ma suggestion est d'utiliser ma configuration et de comparer la vôtre avec la mienne et de voir quelles sont les différences. –

+0

Le paquet aurait pu avoir un impact si nous essayions de consigner le message du médiateur de classe lui-même. –

+0

Vous avez raison. N'a pas examiné le code correctement, pensait que la sortie serait faite à l'intérieur du médiateur personnalisé. Merci pour le commentaire. Je laisse ma réponse de toute façon, peut-être que quelqu'un verra exactement le problème pour les journaux provenant du Médiateur. – FiveO