【问题标题】:WSO2 - Enterprise Integrator - Filter MediatorWSO2 - 企业集成商 - 过滤中介
【发布时间】: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="&#xa; --->  ">
                            <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="&#xa; --->  ">
                            <property name="log2.message" value="  -------------> Welcome to Log Mediator"/>
                            <property expression="get-property(&quot;log2.message&quot;)" name="log2.MyProperty"/>
                            <property expression="get-property(&quot;MessageID&quot;)" name="log2.msgID"/>
                            <property expression="get-property(&quot;welcomeMsg&quot;)" 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="&#xa; --->  ">
                    <property expression="get-property(&quot;welcomeMsg&quot;)" 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


【解决方案1】:

以下代理正在为我工​​作

<?xml version="1.0" encoding="UTF-8"?><proxy xmlns="http://ws.apache.org/ns/synapse" name="soapProxy" startOnLoad="true" statistics="disable" trace="disable" transports="http,https">
<target>
    <inSequence>
        <filter regex="test" source="get-property('transport','header1')">
            <then>
                <log level="custom">
                    <property name="value" value="---------- Then Clause ---"/>
                </log>
                <send>
                    <endpoint>
                        <http uri-template="http://www.mocky.io/v2/5185415ba171ea3a00704eed"/>
                    </endpoint>
                </send>
            </then>
            <else>
                <log level="custom">
                    <property name="value" value="--- Else Clause ---"/>
                </log>
                <send>
                    <endpoint>
                        <http uri-template="http://www.mocky.io/v2/5185415ba171ea3a00704eed"/>
                    </endpoint>
                </send>
            </else>
        </filter>
        <respond/>
    </inSequence>
</target>
<description/>

使用以下 CURL 命令。

卷曲-X POST \ http://localhost:8280/services/soapProxy\ -H '缓存控制:无缓存' \ -H '内容类型:应用程序/json' \ -H 'header1: test2' \ -H '邮递员令牌:d4d1e767-3cd7-39a6-2782-58ab0ffba987' \ -d' { “一”:“一” }'

卷曲-X POST \ http://localhost:8280/services/soapProxy\ -H '缓存控制:无缓存' \ -H '内容类型:应用程序/json' \ -H 'header1: 测试' \ -H '邮递员令牌:d4d1e767-3cd7-39a6-2782-58ab0ffba987' \ -d' { “一”:“一” }'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多