我正在使用IBM集成工具包
我有两个流程的应用程序;请求流使用http请求节点有一个json请求消息,然后通过MQ输入,计算节点然后MQ回复将消息抛出到另一个流(在另一个表示存根的应用程序中)。
然后通过MQ Input
将消息抛出到我的应用程序中的响应流我需要通过http回复节点以json形式输出消息,但是在流程中它运行异常"消息不包含有效的HTTP上下文信息,需要返回上下文信息"
如果有人知道这个错误以及如何解决它 提前致谢
答案 0 :(得分:0)
问题是您的HTTP响应流不知道它必须响应哪个请求。
如果您确实需要将您的请求和响应实现为不同的流,则必须在某处存储传入HTTP或SOAP请求的标识符,例如在某个专用队列中存储消息。
在您的请求流程中,您可以在
中找到请求的标识符 InputLocalEnvironment.Destination.HTTP.RequestIdentifier
或
InputLocalEnvironment.Destination.SOAP.RequestIdentifier
取决于输入节点的类型。
然后,您的响应流应该读取请求流写入的消息,以查找RequestIdentifier的值。 此值应设置为响应消息程序集的LocalEnvironment:
OutputLocalEnvironment.Destination.HTTP.Reply.ReplyIdentifier
或
OutputLocalEnvironment.Destination.SOAP.Reply.ReplyIdentifier
当HTTPInput节点收到输入请求消息时,它将本地环境字段Destination.HTTP.RequestIdentifier设置为标识发送请求的Web服务客户端的唯一值。您可以参考此值,如果合适,您可以将其保存到其他位置。
例如,如果您设计了一对与之交互的消息流 现有的WebSphere MQ应用程序(如Broker调用中所述) 现有的Web服务),可以保存标识符值 请求流,并在回复流程中恢复它,以确保 正确的客户收到回复。如果你使用这种技术,你必须 不更改数据,您必须将数据保留为BLOB。
HTTPReply节点从本地提取标识符值 环境树并设置回复,以便将其发送给 特定客户。但是,如果您在流中使用HTTPReply节点 没有HTTPInput节点,并且此字段已被删除 或设置不正确,发出消息BIP3143S。