Websphere Message Broker SOAP请求节点以网关模式调用.NET Web服务(无WSDL)

时间:2014-01-14 22:34:21

标签: soap ibm-mq webservice-client ibm-integration-bus extended-sql

我一直在努力解决这个问题,所有的搜索结果(以及我读过的很多)似乎都不适用于我的情况。

我有一个Websphere Message Broker消息流,其子流调用的是用Visual Studio编写的Web服务。我试图在网关模式下调用此Web服务,这意味着我没有将WSDL插入到我用来编写此流程的Broker Toolkit中的SOAP请求节点的属性中。

我得到的错误消息是常见的:

由于EndpointDispatcher上的ContractFilter不匹配,无法在接收方处理带有Action SendEmail的消息。这可能是由于合同不匹配(发送方与接收方之间的操作不匹配)或发送方与接收方之间的绑定/安全性不匹配。检查发件人和收件人是否具有相同的合同和相同的约束(包括安全要求,例如邮件,传输,无)。

我不确定如何处理这个问题。由于网关模式,许多属性在SOAP请求节点的属性中是不可配置的。我可以在ESQL代码中设置这些,也许在某个地方的消息中,例如HTTPRequestHeader?

我正在使用Websphere 8,Broker Toolkit 7.5。消息的传输是HTTP,不使用SSL。 WS-Addressing也没有被使用。

欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

是的,在网关模式下,您不需要WSDL。您的目标Web服务需要其他信息,如下所示。

le.getRootElement().evaluateXPath("?Destination/?SOAP/?Request/?WSA/?Action[set-value('"+Action+"')]");

尝试按上述方式设置本地环境目标。可以根据您获得的WSDL文件设置操作。

如何搜索操作:首先使用提供者网址:

http://URL?WSDL

之后搜索动作词。你可以看到如下的请求动作。

<input wsam:Action="http//ActionURL.bla.bla.bla" message="tns:blabla" /> 

所以只是SET Action = 'http//ActionURL.bla.bla.bla'