2

BPEL からサービスを呼び出せるように、WSO2ESB バージョン 4.8.1 で soap-to-pox プロキシを作成しました。このプロキシは、メッセージを ( を使用して) POX に変換します<address uri="service-address" format="pox"/>。サービスが正しく呼び出され、有効な応答が返されたことをログで確認できます。

応答は名前空間のないプレーンな XML です。

ESB は、この回答を石鹸の封筒に入れずに返します。どうしてこれなの?包むべきだと思います。

誰かが私に欠けているものを教えてもらえますか?

以下は私のプロキシ定義です。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="RDW-OPENB-VRTG-INFO" transports="https http" startOnLoad="true" trace="enable">
<target>
    <inSequence>
        <property name="PRESERVE_WS_ADDRESSING" value="true" scope="default" type="STRING" description="preserve_ws_addressing"/>
        <payloadFactory media-type="xml" description="CreatePayload">
            <format>
                <OPENB-VRTG-INFO xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/OPENB-VRTG-INFO.xsd">
                    <ALG-GEG>
                        <GEBR-IDENT>$1</GEBR-IDENT>
                        <WACHT-WOORD-ACT>$2</WACHT-WOORD-ACT>
                        <PROC-IDENT>2336</PROC-IDENT>
                        <PROC-FUNC>1</PROC-FUNC>
                    </ALG-GEG>
                    <KENT-GEG>
                        <KENTEKEN>$3</KENTEKEN>
                    </KENT-GEG>
                </OPENB-VRTG-INFO>
            </format>
            <args>
                <arg value="50200003"/>
                <arg value="redora05"/>
                <arg xmlns:r="http://argus.cale.nl/soa/RDW/" evaluator="xml" expression="//r:getOpenbVrtgInfo/r:licensePlate"/>
            </args>
        </payloadFactory>
        <log level="full" description="logSendMessage"/>
        <send>
            <endpoint key="RDW"/>
        </send>
    </inSequence>
    <outSequence>
        <log level="full" description="log"/>
        <send/>
    </outSequence>
    <faultSequence>
        <drop description="drop"/>
    </faultSequence>
</target>
<publishWSDL>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:rdw="http://argus.cale.nl/soa/RDW/" name="RDW" targetNamespace="http://argus.cale.nl/soa/RDW/">
        <wsdl:types>
            <xsd:schema targetNamespace="http://argus.cale.nl/soa/RDW/" elementFormDefault="qualified">
                <xsd:element name="getOpenbVrtgInfo">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="licensePlate" type="xsd:string"/>
                            <xsd:element name="rdwUser" type="xsd:string"/>
                            <xsd:element name="rdwPassword" type="xsd:string"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element name="getOpenbVrtgInfoResponse" type="xsd:string"/>
            </xsd:schema>
        </wsdl:types>
        <wsdl:message name="getOpenbVrtgInfoRequest">
            <wsdl:part element="rdw:getOpenbVrtgInfo" name="parameters"/>
        </wsdl:message>
        <wsdl:message name="getOpenbVrtgInfoResponse">
            <wsdl:part element="rdw:getOpenbVrtgInfoResponse" name="parameters"/>
        </wsdl:message>
        <wsdl:portType name="RDW">
            <wsdl:operation name="getOpenbVrtgInfo">
                <wsdl:input message="rdw:getOpenbVrtgInfoRequest"/>
                <wsdl:output message="rdw:getOpenbVrtgInfoResponse"/>
            </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding name="RDWSOAP" type="rdw:RDW">
            <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
            <wsdl:operation name="getOpenbVrtgInfo">
                <soap:operation soapAction="http://argus.cale.nl/soa/RDW/getOpenbVrtgInfo"/>
                <wsdl:input>
                    <soap:body use="literal"/>
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal"/>
                </wsdl:output>
            </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="RDW">
            <wsdl:port binding="rdw:RDWSOAP" name="RDWSOAP">
                <soap:address location="http://argus.cale.nl/soa/rdw"/>
            </wsdl:port>
        </wsdl:service>
    </wsdl:definitions>
</publishWSDL>
</proxy>
4

1 に答える 1

2

SOAP 応答が必要な場合は、メディエーターを送信する前に、outSequence でこのプロパティを追加する必要があります。

<property name="messageType" value="text/xml" scope="axis2" />
于 2014-05-21T15:05:06.207 に答える