You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Dans (JIRA)" <ji...@apache.org> on 2007/06/11 20:17:26 UTC

[jira] Created: (ODE-147) BPEL runtime is generating faulty soap message?

BPEL runtime is generating faulty soap message?
-----------------------------------------------

                 Key: ODE-147
                 URL: https://issues.apache.org/jira/browse/ODE-147
             Project: Ode
          Issue Type: Bug
          Components: BPEL Compilation/Parsing, BPEL Runtime
    Affects Versions: 1.1-incubating
            Reporter: Dans
            Priority: Blocker


'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>


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (ODE-147) BPEL runtime is generating faulty soap message?

Posted by "Alex Boisvert (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ODE-147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alex Boisvert updated ODE-147:
------------------------------

    Attachment: HelloWorld2-RPC.zip

Attaching a working service assembly (see assembly/build/HelloWorld2-RPC-sa.zip) and Ant project that I've used to test.

Apparently the following assignments don't work:

    <bpws:from part="text" variable="request">
        <bpws:query> /text/text() </bpws:query>
    </bpws:from>
    <bpws:to part="parameters"  variable="weatherPartnerLinkRequest">
        <bpws:query> /ns0:ZipCode </bpws:query>
    </bpws:to>

whereas these work:

    <bpws:from> $request.text/text/text() </bpws:from>
    <bpws:to> $weatherPartnerLinkRequest.parameters/ns0:ZipCode </bpws:to>

so there's a good chance this is related to ODE-143.

> BPEL runtime is generating faulty soap message?
> -----------------------------------------------
>
>                 Key: ODE-147
>                 URL: https://issues.apache.org/jira/browse/ODE-147
>             Project: Ode
>          Issue Type: Bug
>          Components: BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.1-incubating
>            Reporter: Dan
>            Priority: Blocker
>         Attachments: HelloWorld2-RPC.zip
>
>
> '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>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.