Uploaded image for project: 'ODE'
  1. ODE
  2. ODE-147

BPEL runtime is generating faulty soap message?

    XMLWordPrintableJSON

Details

    Description

      'm trying to call an external webservice using a http-provider-bc. See the wsdl for the external webservice and the bpel code at the end of this message. Looks like the bpel is responsible for generating a faulty soap message?

      The correct soap message should look like (generated by a different client app written in java)

      <?xml version='1.0' encoding='UTF-8'?>
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Body>
      <ns1:echo xmlns:ns1="http://nec.com/xsd">
      <ns1:req>
      <ns1:request>Echo Test!</ns1:request>
      </ns1:req>
      </ns1:echo>
      </soapenv:Body>
      </soapenv:Envelope>

      http-bc is generating the following

      <?xml version='1.0' encoding='UTF-8'?>
      <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
      <env:Body>
      <echo xmlns="urn:/HelloWorld2-RPC.wsdl" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://nec.com/xsd">
      <text xmlns="">Echo Test!</text>
      </echo>
      </env:Body>
      </env:Envelope>

      Following are the problems in the soap message generated by bc

      Prob 1. Soap message part req is missing in the 2nd one.

      Prob 2. a. echo tag has duplicate namespaces xmlns="http://nec.com/xsd" and
      xmlns="urn:/HelloWorld2-RPC.wsdl". Also echo has xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" that also appears in
      env:Envelope.

      I've been trying to fix this for weeks. I think this is a bug. Please let me know. Following is the
      wsdl for external webservice.

      echo.wsdl

      <wsdl:definitions xmlns:axis2="http://nec.com"
      xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
      xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
      xmlns:ns0="http://nec.com/xsd"
      xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
      xmlns:ns1="http://org.apache.axis2/xsd"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
      targetNamespace="http://nec.com">
      <wsdl:documentation>Echo</wsdl:documentation>
      <wsdl:types>
      <xs:schema xmlns:ns="http://nec.com/xsd"
      attributeFormDefault="qualified" elementFormDefault="qualified"
      targetNamespace="http://nec.com/xsd">
      <xs:element name="echo">
      <xs:complexType>
      <xs:sequence>
      <xs:element name="req" nillable="true"
      type="ns:Request" />
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      <xs:element name="Request" type="ns:Request" />
      <xs:complexType name="Request">
      <xs:sequence>
      <xs:element name="request" nillable="true"
      type="xs:string" />
      </xs:sequence>
      </xs:complexType>
      <xs:element name="echoResponse">
      <xs:complexType>

      <xs:sequence>
      <xs:element name="return" nillable="true"
      type="ns:Response" />
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      <xs:element name="Response" type="ns:Response" />
      <xs:complexType name="Response">
      <xs:sequence>
      <xs:element name="respone" nillable="true"
      type="xs:string" />
      </xs:sequence>
      </xs:complexType>
      </xs:schema>
      </wsdl:types>
      <wsdl:message name="echoMessage">
      <wsdl:part name="part1" element="ns0:echo" />
      </wsdl:message>
      <wsdl:message name="echoResponse">
      <wsdl:part name="part1" element="ns0:echoResponse" />
      </wsdl:message>
      <wsdl:portType name="EchoPortType">
      <wsdl:operation name="echo">
      <wsdl:input
      xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
      message="axis2:echoMessage" wsaw:Action="urn:echo" />
      <wsdl:output message="axis2:echoResponse" />
      </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="EchoSOAP11Binding" type="axis2:EchoPortType">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
      style="document" />
      <wsdl:operation name="echo">
      <soap:operation soapAction="urn:echo" style="document" />
      <wsdl:input>
      <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
      <soap:body use="literal" />
      </wsdl:output>
      </wsdl:operation>
      </wsdl:binding>
      <wsdl:binding name="EchoSOAP12Binding" type="axis2:EchoPortType">
      <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"
      style="document" />
      <wsdl:operation name="echo">
      <soap12:operation soapAction="urn:echo" style="document" />
      <wsdl:input>
      <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
      <soap12:body use="literal" />
      </wsdl:output>
      </wsdl:operation>
      </wsdl:binding>
      <wsdl:binding name="EchoHttpBinding" type="axis2:EchoPortType">
      <http:binding verb="POST" />
      <wsdl:operation name="echo">
      <http:operation location="echo" />
      <wsdl:input>
      <mime:content type="text/xml" />
      </wsdl:input>
      <wsdl:output>
      <mime:content type="text/xml" />
      </wsdl:output>
      </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="Echo">
      <wsdl:port name="EchoSOAP11port_http"
      binding="axis2:EchoSOAP11Binding">
      <soap:address
      location="http://138.15.107.42:8081/axis2/services/Echo" />
      </wsdl:port>
      <wsdl:port name="EchoSOAP12port_http"
      binding="axis2:EchoSOAP12Binding">
      <soap12:address
      location="http://138.15.107.42:8081/axis2/services/Echo" />
      </wsdl:port>
      <wsdl:port name="EchoHttpport"
      binding="axis2:EchoHttpBinding">
      <http:address
      location="http://138.15.107.42:8081/axis2/services/Echo" />
      </wsdl:port>
      </wsdl:service>
      </wsdl:definitions>

      HelloWorld2-RPC.bpel

      <?xml version="1.0" encoding="UTF-8"?>
      <bpws:process
      xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
      xmlns:hello="urn:/HelloWorld2-RPC.wsdl"
      xmlns:ns="urn:/HelloWorld2-RPC.bpelArtifacts"
      xmlns:ns0="http://www.webservicex.net"
      xmlns:tns="urn:/HelloWorld2-RPC.bpel"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" exitOnStandardFault="yes"
      name="HelloWorld2-RPC" targetNamespace="urn:/HelloWorld2-RPC.bpel">
      <bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
      location="HelloWorld2-RPC.wsdl" namespace="urn:/HelloWorld2-RPC.wsdl" />
      <bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
      location="weather.wsdl"
      namespace="http://www.webservicex.net" />
      <bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
      location="HelloWorld2-RPCArtifacts.wsdl"
      namespace="urn:/HelloWorld2-RPC.bpelArtifacts" />
      <bpws:partnerLinks>
      <bpws:partnerLink myRole="Provider" name="helloPartnerLink"
      partnerLinkType="hello:HelloPartnerLinkType" />
      <bpws:partnerLink name="weatherPartnerLink"
      partnerLinkType="ns:weatherPartnerLink"
      partnerRole="weatherProvider" />
      </bpws:partnerLinks>
      <bpws:variables>
      <bpws:variable messageType="hello:HelloRequest" name="request" />
      <bpws:variable messageType="hello:HelloResponse"
      name="response" />
      <bpws:variable name="text" type="xsd:string" />
      <bpws:variable messageType="ns0:GetWeatherByZipCodeSoapOut"
      name="weatherPartnerLinkResponse" />
      <bpws:variable messageType="ns0:GetWeatherByZipCodeSoapIn"
      name="weatherPartnerLinkRequest" />
      </bpws:variables>
      <bpws:sequence>
      <bpws:receive createInstance="yes" name="start"
      operation="Hello" partnerLink="helloPartnerLink"
      portType="hello:HelloPortType" variable="request" />
      <bpws:assign name="assignFromRequestToVariable" validate="no">
      <bpws:copy>
      <bpws:from part="text" variable="request">
      <bpws:query
      queryLanguage="http://www.w3.org/TR/1999/REC-xpath-19991116">
      <![CDATA[/text]]>
      </bpws:query>
      </bpws:from>
      <bpws:to part="parameters"
      variable="weatherPartnerLinkRequest">
      <bpws:query
      queryLanguage="http://www.w3.org/TR/1999/REC-xpath-19991116">
      <![CDATA[/ns0:ZipCode]]>
      </bpws:query>
      </bpws:to>
      </bpws:copy>
      </bpws:assign>
      <bpws:invoke inputVariable="weatherPartnerLinkRequest"
      name="Invoke" operation="GetWeatherByZipCode"
      outputVariable="weatherPartnerLinkResponse"
      partnerLink="weatherPartnerLink" portType="ns0:WeatherForecastSoap" />
      <bpws:assign name="assignFromVariableToResponse"
      validate="no">
      <bpws:copy>
      <bpws:from part="parameters"
      variable="weatherPartnerLinkResponse">
      <bpws:query
      queryLanguage="http://www.w3.org/TR/1999/REC-xpath-19991116">
      <![CDATA[/ns0:GetWeatherByZipCodeResult]]>
      </bpws:query>
      </bpws:from>
      <bpws:to part="text" variable="response">
      <bpws:query
      queryLanguage="http://www.w3.org/TR/1999/REC-xpath-19991116">
      <![CDATA[/text]]>
      </bpws:query>
      </bpws:to>
      </bpws:copy>
      </bpws:assign>
      <bpws:reply name="end" operation="Hello"
      partnerLink="helloPartnerLink" portType="hello:HelloPortType"
      variable="response" />
      </bpws:sequence>
      </bpws:process>

      Attachments

        1. HelloWorld2-RPC.zip
          32 kB
          Alex Boisvert

        Activity

          People

            Unassigned Unassigned
            sdan01 Dan
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: