Soap 这个payloadFactory与WSO2 ESB项目中的头中介链接在一起,它到底是如何工作的?

Soap 这个payloadFactory与WSO2 ESB项目中的头中介链接在一起,它到底是如何工作的?,soap,wso2,integration,wso2esb,Soap,Wso2,Integration,Wso2esb,我是WSO2的新手,正在从事一个WSO2企业集成项目,其中包含ESB项目部分。我想我的问题只与ESB有关 所以我的疑问是:我有一个定义API的XML文件。流从payloadFactory中介开始,类似于: <?xml version="1.0" encoding="UTF-8"?> <api context="/xxxTest2" name="xxxTest2" xmlns="http://ws.apache.org/ns/synapse"> <resour

我是WSO2的新手,正在从事一个WSO2企业集成项目,其中包含ESB项目部分。我想我的问题只与ESB有关

所以我的疑问是:我有一个定义API的XML文件。流从payloadFactory中介开始,类似于:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/xxxTest2" name="xxxTest2" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <!--  Create empty message to get all samples from DSS -->
            <!-- Get Sample ID -->
            <payloadFactory media-type="xml">
                <format>
                    <body/>
                </format>
                <args>
                    <arg evaluator="xml" expression="get-property('uri.var.int_val')" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd"/>
                </args>
            </payloadFactory>

            <!-- 
             Adding an header that defines the actionr related to the "FindNotProcessed" DSS service
             used to retrieve all the unprocessed resource on the DB
            -->
            <header name="Action" scope="default" value="urn:FindNotProcessed"/>

            <!-- Log the request generated by the previous payloadFactory mediator: -->
            <log level="full"/>
            ...............................................................
            ...............................................................
            ...............................................................
</api>
我的疑问是:这个payloadFactory中介程序生成空消息,因为它的内容是:

<format>
    <body/>
</format>
链中的下一个元素是标头中介:

用于设置一个名为name=Action的新标头,该标头将DSS服务的名称指定为value,以从数据库获取一些数据

最后,链中的下一个元素是日志中介。在我看来,它用于记录由前一个payloadFactory中介器与下面的头中介器连接而生成的消息

This log mediator generate this log:

TID: [-1234] [] [2017-03-28 10:05:30,943]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  

To: /glisTest2, WSAction: urn:FindNotProcessed, SOAPAction: urn:FindNotProcessed, MessageID: urn:uuid:95913219-2ad1-4488-a260-78693f3bbde2, Direction: request, 

Envelope: 
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Body>
        <body xmlns="http://ws.apache.org/ns/synapse"/>
    </soapenv:Body>
</soapenv:Envelope> {org.apache.synapse.mediators.builtin.LogMediator}
我的疑问是:

1为什么它会生成嵌入soapenv结构的XML消息

2这取决于标头meadiator定义的scope=default应与Synapse一致。因为阅读官方文件:

它说:

作用域:如果要操作SOAP头,请选择Synapse。选择 如果要操作HTTP头,请执行传输

因此,我认为以这种方式进行的设置正在生成一条SOAP消息,原因也是如此,因为我的消息被放入了soapenv结构中

还是我遗漏了什么

默认情况下,WSO2 EI/ESB中的所有消息都将被视为SOAP消息,这就是您的负载被封装在SOAP信封中的原因

当您将消息发送到端点时,头实际上起作用,因此如果您有端点,消息的操作Soap操作将设置为urn:FindNotProcessed。这意味着,如果端点是soap端点,则消息将转到端点的urn:FindNotProcessed操作

谢谢

This log mediator generate this log:

TID: [-1234] [] [2017-03-28 10:05:30,943]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  

To: /glisTest2, WSAction: urn:FindNotProcessed, SOAPAction: urn:FindNotProcessed, MessageID: urn:uuid:95913219-2ad1-4488-a260-78693f3bbde2, Direction: request, 

Envelope: 
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Body>
        <body xmlns="http://ws.apache.org/ns/synapse"/>
    </soapenv:Body>
</soapenv:Envelope> {org.apache.synapse.mediators.builtin.LogMediator}