我需要"连接"我的肥皂服务的每次操作到休息服务。在wso2-esb中,我已经定义了一个带有预定义wsdl的新代理服务,到目前为止一直很好,我已经发布了该服务,我可以"看到" soap-ui的操作。
现在我需要定义(我认为)一个In-secuence,我的第一个问题是我需要区分op1,op2和op3,因为每个soap操作都会转到不同的休息服务
根据客户端调用的操作,我需要什么样的中介来分割我的请求?
谢谢!
答案 0 :(得分:1)
这个场景与"Message Router" Pattern非常相似,你必须使用SOAP Header值进行路由,而不是消息内容中的值作为EIP。
好吧,要获得调用SOAP操作,您需要获取SOAP Header值,这里是一个示例代理:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="proxy_router_by_header"
transports="http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
<property name="MY_SOAP_ACTION"
expression="get-property('Action')"
scope="default"
type="STRING"/>
<log level="custom">
<property name="* Action sample1" expression="get-property('MY_SOAP_ACTION')"/>
</log>
<log level="custom">
<property name="* Action sample2" expression="$ctx:MY_SOAP_ACTION"/>
</log>
<filter source="get-property('MY_SOAP_ACTION')" regex=".*mediate.*">
<then>
<log level="custom">
<property name="* Evaluation" value=" inside of filter TRUE"/>
</log>
</then>
<else>
<log level="custom">
<property name="* Evaluation" value=" inside of filter FALSE"/>
</log>
</else>
</filter>
</inSequence>
</target>
<description/>
</proxy>
我希望这对你有所帮助。 问候。