2017-01-30 2 views
2

J'ai un problème avec wso2 esb. J'ai écrit un proxy et en ce que j'appelle un point final pour faire quelques changements sur l'entrée originale. mais le journal avant appel et après appel est le même (il devrait être différent). Il semble que l'appel ne fonctionne pas du tout. Quand j'envoie respone à l'extérieur, c'est nul. Quelqu'un peut-il dire pourquoi cela arrive? (Je l'ai testé mon point final dans soupUI)pourquoi appeler ne fonctionne pas dans wso2 esb

ceci est ma procuration:

 <inSequence> 
    <property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/> 
    <property name="OUT_ONLY" value="true" scope="default" type="STRING"/> 
    <smooks config-key="smooks-csv1"> 
     <input type="text"/> 
     <output type="xml"/> 
    </smooks> 
    <iterate continueParent="true" 
       preservePayload="true" 
       attachPath="//csv-set" 
       expression="//csv-set/search" 
       sequential="true"> 
     <target> 
      <sequence> 
       <xslt key="gov:/first.xsl"/> 
       <xslt key="gov:/second.xsl"/> 
       **<log level="full"/> 
       <call blocking="true"> 
       <endpoint> 
        <address uri="MyEndPiont"/> 
       </endpoint> 
       </call> 
       <log level="full"/>** 
      </sequence> 
     </target> 
    </iterate> 
    <respond/> 
    </inSequence> 
    <outSequence> 
    <aggregate> 
     <completeCondition> 
      <messageCount min="0" max="100"/> 
     </completeCondition> 
     <onComplete expression="//Guest"> 
     </onComplete> 
    </aggregate> 
    </outSequence> 

Répondre

1

Essayez ceci. Liste des changements:

  • Supprimé respond médiateur.
  • Remplacé call par send.
  • Ajouté send dans la séquence.

    <inSequence> 
        <property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/> 
        <property name="OUT_ONLY" value="true" scope="default" type="STRING"/> 
        <smooks config-key="smooks-csv1"> 
         <input type="text"/> 
         <output type="xml"/> 
        </smooks> 
        <iterate continueParent="true" 
           preservePayload="true" 
           attachPath="//csv-set" 
           expression="//csv-set/search" 
           sequential="true"> 
         <target> 
          <sequence> 
           <xslt key="gov:/first.xsl"/> 
           <xslt key="gov:/second.xsl"/> 
           <log level="full"/> 
           <send> 
           <endpoint> 
            <address uri="MyEndPiont"/> 
           </endpoint> 
           </send> 
          </sequence> 
         </target> 
        </iterate> 
        </inSequence> 
        <outSequence> 
        <aggregate> 
         <completeCondition> 
          <messageCount min="0" max="100"/> 
         </completeCondition> 
         <onComplete expression="//Guest"> 
         </onComplete> 
        </aggregate> 
        <send /> 
        </outSequence> 
    
+0

malheureusement avec ces changements encore, je ne peux pas voir la sortie en outsequence. il me donne cette erreur: "ERREUR - VFSTransportSender Erreur lors de l'attachement des propriétés du système de fichiers VFS .. null ERREUR - VFSTransportSender Impossible de déterminer les informations de transport pour envoyer un message". que devrais-je faire? merci d'avance –

+0

Pouvez-vous essayer de supprimer la propriété 'OUT_ONLY'? – Bee

+0

en enlevant cela, je peux voir le résultat. Mais cela me donne une erreur car j'utilise VFS et c'est asynchrone. Dans la partie envoi, j'écris la réponse dans un fichier. Il s'agit d'une erreur: "Le transport VFS ne prend pas en charge les réponses synchrones.Veuillez utiliser le modèle d'échange de messages approprié (out uniquement)" –

0

Essayez blocking="false". S'il vous plaît noter que faire ce changement ne rend pas le médiateur d'appel est asynchonus. C'est synchrone indépendamment du fait que le blocage soit vrai ou faux. Le blocage est juste un détail d'implémentation.

The Call mediator is used to send messages out of the ESB to an endpoint. You can invoke services either in blocking or non-blocking manner.

When you invoke a service in non-blocking mode, the underlying worker thread returns without waiting for the response. In blocking mode, the underlying worker thread gets blocked and waits for the response after sending the request to the endpoint. Call mediator in blocking mode is very much similar to the Callout mediator.

In both blocking and non-blocking modes, Call mediator behaves in a synchronous manner. Hence, mediation pauses after the service invocation and resumes from the next mediator in the sequence when the response is received. Call mediator allows you to create your configuration independent from the underlying architecture.

cité de https://docs.wso2.com/display/ESB500/Call+Mediator

+0

Je change de bloquer = "false", mais il n'y a pas de changement ... –

+0

activer les journaux de fil et de voir. http://lakshanigamage.blogspot.com/2015/03/how-to-enable-wire-logs-in-wso2-esbapim.html – Bee

+0

@ Bhathiya merci beaucoup. Maintenant, je peux voir la sortie souhaitée dans la console. mais pourquoi dans un état normal je ne pouvais pas voir le résultat? Comment puis-je sauvegarder ce résultat? –