我一直在努力解决这个问题,所有的搜索结果(以及我读过的很多)似乎都不适用于我的情况。
我有一个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也没有被使用。
欢迎任何建议。
答案 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'