1

私のWebサービスの操作は次のように定義されています。ヘッダーパラメータもあります。

public void method(@WebParam(name="OrderNo", mode=WebParam.Mode.IN) String order_no_,
                    @WebParam(name="user", mode=WebParam.Mode.IN, header=true) String user) 

このサービスをデプロイすると、次のようなWSDLが得られます。

<?xml version="1.0" ?>
<wsdl:definitions ... >
    <wsdl:types>
        </xs:schema>
            ...
            <xs:element name="method" type="tns:method"></xs:element>
            <xs:complexType name="method">
                <xs:sequence>
                    <xs:element minOccurs="0" name="OrderNo" type="xs:string"></xs:element>
                </xs:sequence>
            </xs:complexType>  
            ...
            <xs:element name="user" nillable="true" type="xs:string"></xs:element>
            ...
        </xs:schema>
    </wsdl:types>
    ...
    <wsdl:message name="method">
        <wsdl:part element="tns:method" name="parameters" />
        <wsdl:part element="tns:user" name="user" />
    </wsdl:message>
    ...
    <wsdl:portType name="CustomerOrderService">
        <wsdl:operation name="method">
            <wsdl:input message="tns:method" name="method" />
            <wsdl:output ... /> 
            <wsdl:fault ... />
        </wsdl:operation>
    </wsdl:portType>
    ...
    <wsdl:binding name="OrderSoapBinding" type="tns:OrderService">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
        <wsdl:operation name="method">
            <soap:operation soapAction="" style="document" /> 
            <wsdl:input name="method">
                <soap:header message="tns:method" part="user" use="literal" /> 
                <soap:body parts="parameters" use="literal" /> 
            </wsdl:input>
            <wsdl:output name="...">
                <soap:body use="literal" /> 
            </wsdl:output>
            <wsdl:fault name="...">
                ...
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
</wsdl:definitions>  

ご覧のとおり、ヘッダーはサービスリクエストの入力として使用されるメッセージの一部です。私はSOAPUIを使用してこのWSDLをテストし、ヘッダーの一部として「user」プロパティを使用して適切なSOAPメッセージを生成しました。

このサービスをCarbonBPELプロセスのパートナーリンクとして使用し、invokeメッセージの「user」部分に値を割り当てると、その値はヘッダーに含まれません。

<bpel:variable name="method_Input" messageType="ns0:method" />  

<bpel:assign name="...">
   ...
   <bpel:copy>
      <bpel:from>$input.payload/tns:TaskReceiver</bpel:from>
      <bpel:to>$method_Input.user</bpel:to>
   </bpel:copy>
</bpel:assign>

メッセージ部分に適切な値が割り当てられていることがわかります。

コンソール情報

問題は、soapメッセージのヘッダーにバインドされているこのメッセージ部分がsoapヘッダーに含まれないことです。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <method xmlns="http://customerorder.service.test/">
            <OrderNo xmlns="">ORD00011</OrderNo>
        </method>
    </soapenv:Body>
</soapenv:Envelope>  

提供された助けに事前に感謝します。

4

0 に答える 0