我正在努力使我的消息流在wso2 esb中工作,所以我需要一些帮助才能实现基本的沟通:
Service1想要接收整数 Service2生成随机数
Service1具有InSequence:log,send(指定的地址点)。 OutSequence:log,发送
这看起来像:
<proxy name="ClientAskNumber" transports="https http" startOnLoad="true"
trace="disable">
<target faultSequence="fault">
<inSequence>
<log level="full">
<property name="Insequence" value="***" />
</log>
<send>
<endpoint>
<address uri="http://localhost:8280/services/RandomNumbers" />
</endpoint>
</send>
</inSequence>
<outSequence>
<log level="full">
<property name="Outsequence" value="***" />
</log>
<send />
</outSequence>
</target>
</proxy>
我有这样的答复:<faultstring>System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: urn:mediate. at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()....etc
这意味着什么?我错过了别的什么吗?请帮忙。谢谢
修改
我正在研究Wso2 ESB,我只需要了解如何使工作成为一种消息沟通,之后我会尝试添加不同类型的中介。我正在解决这个问题,因为我对这项技术不熟悉,而且你可以看到我真的很难让它发挥作用......
EDIT2:*
<proxy xmlns="http://ws.apache.org/ns/synapse" name="ClientAskNumber" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
<target endpoint="RandomNumbers">
<inSequence>
<log>
<property name="CLIENTASKS" value="******C_ASKS" />
</log>
<send>
<endpoint key="RandomNumbers" />
</send>
</inSequence>
<outSequence>
<log>
<property name="CLIENTRECEIVES" value="*******C_RECEIVES" />
</log>
</outSequence>
</target>
</proxy>
答案 0 :(得分:3)
如果这有助于其他人:"Server did not recognize the value of HTTP Header SOAPAction: urn:mediate..."
的问题是我需要添加一个Header中介,以便将我的webservice方法“getNumbers”调用到我的InSequence中,如下所示:
<inSequence>
<log>
<property name="CLIENTASKS" value="******C_ASKS" />
</log>
<header name="Action" value="http://tempuri.org/getNumbers" />
<send>
<endpoint key="RandomNumbers" />
</send>
</inSequence>
并通过soapUI发送此请求:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Numbers xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>
我希望这对于使用.Net解决方案与WSO2ESB的其他人有用(不幸的是,那里没有很多例子......)
P.S。感谢Ratha的帮助
答案 1 :(得分:1)
这是我可以告诉你的流程.. 您必须将第二项服务指向您的第一项服务的终点。在上述配置中
http://localhost:8280/services/RandomNumbers --->2nd service url
ClientAskNumber -->1st service..
现在您可以发送执行第二项服务所需的请求(即:检索随机数) 因此代理将转发到该端点并将响应返回到outsequence。您应该在控制台/日志中看到,因为您使用了日志中介。
在错误回复中,我希望您从第二次服务中获得该错误。检查您是否向端点发送了正确的请求