【发布时间】:2020-01-22 04:43:32
【问题描述】:
我正在尝试了解 Filter Mediator 的工作原理。 我有一个与 SOAP API 对话的代理服务。我尝试将 Filter Mediator 引入它以进行基于标头的路由,但它不再起作用了。
请查看并告诉我我在这里做错了什么。
soapProxy.xml
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="soapProxy" startOnLoad="true" transports="http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<filter regex="test" source="get-property('transport','header1')">
<then>
<log description="ifLog" level="custom">
<property name="value" value="---------- Then Clause ---"/>
</log>
<send>
<endpoint key="SoapEndpoint"/>
</send>
</then>
<else>
<log description="elseLog" level="custom">
<property name="value" value="--- Else Clause ---"/>
</log>
<log description="log1" level="custom" separator="
 ---> ">
<property name="log1.message" value=" ---> printing log1"/>
<property expression="get-property('transport','header1')" name="log1.headerProperty"/>
</log>
<property description="welcomeMsgProperty" name="welcomeMsg" scope="default" type="STRING" value="------ Hello World Property Mediator"/>
<log description="log2" separator="
 ---> ">
<property name="log2.message" value=" -------------> Welcome to Log Mediator"/>
<property expression="get-property("log2.message")" name="log2.MyProperty"/>
<property expression="get-property("MessageID")" name="log2.msgID"/>
<property expression="get-property("welcomeMsg")" name="log2.welcomeMsg"/>
<property expression="$trp:Content-Type" name="log2.stockprop"/>
</log>
<send>
<endpoint key="SoapEndpoint"/>
</send>
</else>
</filter>
</inSequence>
<outSequence>
<log description="resLog" separator="
 ---> ">
<property expression="get-property("welcomeMsg")" name="welcomeMsg"/>
<property name="test" value="*****"/>
</log>
<send/>
</outSequence>
<faultSequence/>
</target>
</proxy>
**SoapEndpoint.xml**
<?xml version="1.0" encoding="UTF-8"?>
<endpoint name="SoapEndpoint" xmlns="http://ws.apache.org/ns/synapse">
<address format="soap12" optimize="swa" uri="http://localhostlocal:9090/ws/countries.wsdl"/>
<property name="ENDPOINT_ADDRESS" value="http://localhost.local:9090/ws/countries.wsdl"/>
</endpoint>
然后我尝试使用序列调解器重定向请求,但也出现错误。 错误 - 找不到名为 Value {name ='null', keyValue ='sequence1'} 的 SequenceMediator 序列
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="sequence1" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<send>
<endpoint>
<address uri="http://localhost:9090/ws/countries.wsdl"/>
</endpoint>
</send>
</sequence>
<filter regex="test" source="get-property('transport','header1')">
<then>
<log description="ifLog" level="custom">
<property name="value" value="---------- Then Clause ---"/>
</log>
<sequence key="sequence1"/>
</then>
.....
.....
【问题讨论】:
-
请修改您的帖子标题以提出实际问题(而不是列出标签)。谢谢!
标签: wso2 wso2esb wso2carbon wso2ei