2017-10-14 15 views
1

J'utilise la boîte à outils d'intégration IBMLe message ne contient pas d'informations de contexte HTTP valides, Besoin d'informations de contexte de retour

J'ai une application avec deux flux; le flux de requête a un message de requête json utilisant un nœud de requête http puis le message est envoyé à un autre flux (dans une autre application représentant un bout) via une entrée MQ, un noeud de calcul puis une réponse MQ.

Il lance alors le message au flux de réponse dans ma demande par MQ Entrée

J'ai besoin pour sortir le message sous une forme JSON par le noeud de réponse HTTP, mais dans le flux, il exécute une exception « Le message ne contient pas informations valides contexte HTTP, besoin de retour d'informations de contexte »

si quelqu'un a un indice de cette erreur et comment résoudre Merci à l'avance

Répondre

0

Le problème est que votre flux de réponse HTTP ne sait pas qui le demander a répondre. Dans le cas où vous avez vraiment besoin que votre requête et votre réponse soient implémentées comme des flux différents, vous devez stocker l'identifiant de la requête HTTP ou SOAP entrante quelque part, par exemple comme un message dans une file d'attente dédiée.

Dans votre demande, vous pouvez trouver écoulement identifiant de la demande dans

InputLocalEnvironment.Destination.HTTP.RequestIdentifier 

ou

InputLocalEnvironment.Destination.SOAP.RequestIdentifier 

en fonction du type de votre noeud d'entrée. Ensuite, votre flux de réponse devrait lire un message écrit par le flux de demandes pour trouver une valeur de RequestIdentifier. Cette valeur doit être réglée dans le LocalEnvironment de l'ensemble de message de réponse:

OutputLocalEnvironment.Destination.HTTP.Reply.ReplyIdentifier 

ou

OutputLocalEnvironment.Destination.SOAP.Reply.ReplyIdentifier 

Voici IBM doc: https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac20450_.htm#ac20450___le

Lorsque le noeud HTTPInput reçoit un message de demande d'entrée , il définit le champ d'environnement local Destination.HTTP.RequestIdentifier sur une valeur unique qui identifie le client de service Web qui a envoyé la demande. Vous pouvez vous référer à cette valeur, et vous pouvez l'enregistrer dans un autre emplacement si nécessaire.

Par exemple, si vous créez une paire de flux de messages qui interagissent avec une application WebSphere MQ existante (comme décrit dans Broker appels existant service Web), vous pouvez enregistrer la valeur d'identifiant dans le flux de demande , et restaurer dans le flux de réponse, pour s'assurer que le client correct reçoit la réponse. Si vous utilisez cette technique, vous devez ne pas modifier les données et vous devez conserver les données en tant que BLOB.

Le noeud HTTPReply extrait la valeur de l'identificateur de l'arborescence d'environnement locale et configure la réponse afin qu'elle soit envoyée au client spécifique .Toutefois, si vous utilisez un noeud HTTPReply dans un flux qui n'a pas de noeud HTTPInput et que ce champ a été supprimé ou défini incorrectement, le message BIP3143S est émis.

+0

Thaanks beaucoup –