You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Scott Kurz <sc...@gmail.com> on 2008/06/25 15:34:29 UTC

Question about: (TUSCANY-2388) Data binding does not work when Java interface & implementation (where method param is not String, primitive) exposed with a web services binding

This seems like an interesting issue and I was curious about a couple
things:

First, I'm wondering why I didn't recreate the error that others noticed.
Any ideas?

Next, I was wondering what implications there are here.   I'm not 100% sure
but I'm guessing in the bottom-up case, without the Java wrapper
we would do child-to-child data transform instead of wrapper-to-wrapper (in
spite of the fact that the WSDL we gen is wrapped).

So does this imply that we always need the Java wrappers to deserialize XML
in the elementFormDefault=qualified style?

This doesn't seem too burdensome for the user, just trying to understand...

Scott



On Sat, Jun 21, 2008 at 2:03 AM, Raymond Feng (JIRA) <de...@tuscany.apache.org>
wrote:

>
>     [
> https://issues.apache.org/jira/browse/TUSCANY-2388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel]
>
> Raymond Feng resolved TUSCANY-2388.
> -----------------------------------
>
>    Resolution: Fixed
>
> I confirmed it's now fixed by r670103.
>
> > Data binding does not work when Java interface & implementation (where
> method param is not String, primitive) exposed with a web services binding
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------
> >
> >                 Key: TUSCANY-2388
> >                 URL: https://issues.apache.org/jira/browse/TUSCANY-2388
> >             Project: Tuscany
> >          Issue Type: Bug
> >          Components: Java SCA Data Binding Runtime
> >    Affects Versions: Java-SCA-1.1
> >         Environment: Windows XP; IBM J2RE 1.5.0 (Build 2.3)
> >            Reporter: Peter Kemp
> >            Assignee: Raymond Feng
> >         Attachments: testcase.zip
> >
> >
> > 1. Create a component with a java implementation, with a service defined
> by a Java interface.
> > The parameter to the method is not a String, primitive or wrapper -
> rather, it's a class containing a couple of Strings and an Integer.
> > 2. Expose the service with a webservice binding.
> > 3. Deploy the composite (as a WAR or embedded).
> > 4. Retrieve the WSDL for the service (eg from
> http://localhost:8080/SomeServices?wsdl).
> > 5. Generate a web service request from the WSDL.
> > The runtime fails to map the web service request message to the
> implementation class method parameters - it calls the correct method, but
> the method parameter is null.
> > The test works fine when the parameter is a String.
> > Composite definition (some.composite):
> > -------------------------------------------------------
> > <?xml version="1.0" encoding="UTF-8"?>
> > <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="
> http://test" xmlns:test="http://test" name="some">
> >     <service name="SomeServices" promote="SomeServicesComponent">
> >         <binding.ws uri="http://localhost:8080/SomeServices"/>
> >     </service>
> >     <component name="SomeServicesComponent">
> >         <implementation.java class="service.SomeServiceImpl"/>
> >         <service name="SomeService">
> >             <interface.java interface="service.SomeService" />
> >         </service>
> >     </component>
> > </composite>
> > Service interface:
> > -----------------------
> > /**
> >  *
> >  */
> > package service;
> > import org.osoa.sca.annotations.Remotable;
> > @Remotable
> > public interface SomeService {
> >
> >     public AnObject getUsingString(String stringParam);
> >     public AnObject getUsingMoreComplexObject(MoreComplexObject
> moreComplexParam);
> >
> > }
> > Implementation:
> > ----------------------
> > package service;
> > import org.osoa.sca.annotations.Service;
> > @Service(SomeService.class)
> > public class SomeServiceImpl implements SomeService {
> >     public AnObject getUsingString(String stringParam) {
> >         System.out.println("Param value:" + stringParam);
> >         return getAnObject(stringParam);
> >     }
> >     private AnObject getAnObject(String stringParam) {
> >         // TODO Auto-generated method stub
> >         return new AnObject(stringParam + "123", 123);
> >     }
> >     public AnObject getUsingMoreComplexObject(MoreComplexObject
> moreComplexParam) {
> >         System.out.println("Param value:" +
> moreComplexParam.getStringParam());
> >
> >         return getAnObject(moreComplexParam.getStringParam());
> >     }
> >
> > }
> > MoreComplexObject.java
> > -----------------------------------
> > /**
> >  *
> >  */
> > package service;
> > import java.io.Serializable;
> > public class MoreComplexObject implements Serializable{
> >     private static final long serialVersionUID = 43242314234123L;
> >     private String stringParam;
> >     private Integer intParam;
> >     private String stringParam2;
> >     public String getStringParam() {
> >         return stringParam;
> >     }
> >     public void setStringParam(String stringParam) {
> >         this.stringParam = stringParam;
> >     }
> >     public Integer getIntParam() {
> >         return intParam;
> >     }
> >     public void setIntParam(Integer intParam) {
> >         this.intParam = intParam;
> >     }
> >     public String getStringParam2() {
> >         return stringParam2;
> >     }
> >     public void setStringParam2(String stringParam2) {
> >         this.stringParam2 = stringParam2;
> >     }
> >
> > }
> > AnObject.java
> > -------------
> > package service;
> > public class AnObject {
> >     private String someRetValue;
> >     private Integer someOtherRetValue;
> >
> >     public AnObject() {
> >     }
> >     public AnObject(String someRetValue, Integer someOtherRetValue) {
> >         this.someRetValue = someRetValue;
> >         this.someOtherRetValue = someOtherRetValue;
> >     }
> >     /**
> >      * @return the someOtherRetValue
> >      */
> >     public Integer getSomeOtherRetValue() {
> >         return someOtherRetValue;
> >     }
> >     /**
> >      * @param someOtherRetValue the someOtherRetValue to set
> >      */
> >     public void setSomeOtherRetValue(Integer someOtherRetValue) {
> >         this.someOtherRetValue = someOtherRetValue;
> >     }
> >     /**
> >      * @return the someRetValue
> >      */
> >     public String getSomeRetValue() {
> >         return someRetValue;
> >     }
> >     /**
> >      * @param someRetValue the someRetValue to set
> >      */
> >     public void setSomeRetValue(String someRetValue) {
> >         this.someRetValue = someRetValue;
> >     }
> >
> >
> > }
> > WSDL returned by http://localhost:8080/SomeServices?wsdl
> >
> -------------------------------------------------------------------------------------------
> > <?xml version="1.0" encoding="UTF-8"?>
> > <wsdl:definitions targetNamespace="http://service" xmlns:soap12="
> http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="
> http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="
> http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xs="
> http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://service/xsd"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="
> http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsaw="
> http://www.w3.org/2006/05/addressing/wsdl" xmlns:ns1="http://service">
> >   <wsdl:types>
> >     <xs:schema attributeFormDefault="qualified"
> elementFormDefault="qualified" targetNamespace="http://service/xsd"
> xmlns:ax21="http://service/xsd">
> >          <xs:complexType name="MoreComplexObject">
> >             <xs:sequence>
> >                <xs:element minOccurs="0" name="intParam" nillable="true"
> type="xs:int"/>
> >                <xs:element minOccurs="0" name="stringParam"
> nillable="true" type="xs:string"/>
> >                <xs:element minOccurs="0" name="stringParam2"
> nillable="true" type="xs:string"/>
> >             </xs:sequence>
> >          </xs:complexType>
> >          <xs:complexType name="AnObject">
> >             <xs:sequence>
> >                <xs:element minOccurs="0" name="someOtherRetValue"
> nillable="true" type="xs:int"/>
> >                <xs:element minOccurs="0" name="someRetValue"
> nillable="true" type="xs:string"/>
> >             </xs:sequence>
> >          </xs:complexType>
> >       </xs:schema>
> >     <xs:schema attributeFormDefault="qualified"
> elementFormDefault="qualified" targetNamespace="http://service" xmlns:ns="
> http://service">
> >          <xs:element name="getUsingMoreComplexObject">
> >             <xs:complexType>
> >                <xs:sequence>
> >                   <xs:element minOccurs="0" name="param0" nillable="true"
> type="ns0:MoreComplexObject"/>
> >                </xs:sequence>
> >             </xs:complexType>
> >          </xs:element>
> >          <xs:element name="getUsingMoreComplexObjectResponse">
> >             <xs:complexType>
> >                <xs:sequence>
> >                   <xs:element minOccurs="0" name="return" nillable="true"
> type="ns0:AnObject"/>
> >                </xs:sequence>
> >             </xs:complexType>
> >          </xs:element>
> >          <xs:element name="getUsingString">
> >             <xs:complexType>
> >                <xs:sequence>
> >                   <xs:element minOccurs="0" name="param0" nillable="true"
> type="xs:string"/>
> >                </xs:sequence>
> >             </xs:complexType>
> >          </xs:element>
> >          <xs:element name="getUsingStringResponse">
> >             <xs:complexType>
> >                <xs:sequence>
> >                   <xs:element minOccurs="0" name="return" nillable="true"
> type="ns0:AnObject"/>
> >                </xs:sequence>
> >             </xs:complexType>
> >          </xs:element>
> >       </xs:schema>
> >   </wsdl:types>
> >   <wsdl:message name="getUsingStringResponse">
> >     <wsdl:part name="parameters" element="ns1:getUsingStringResponse">
> >     </wsdl:part>
> >   </wsdl:message>
> >   <wsdl:message name="getUsingMoreComplexObjectResponse">
> >     <wsdl:part name="parameters"
> element="ns1:getUsingMoreComplexObjectResponse">
> >     </wsdl:part>
> >   </wsdl:message>
> >   <wsdl:message name="getUsingStringRequest">
> >     <wsdl:part name="parameters" element="ns1:getUsingString">
> >     </wsdl:part>
> >   </wsdl:message>
> >   <wsdl:message name="getUsingMoreComplexObjectRequest">
> >     <wsdl:part name="parameters" element="ns1:getUsingMoreComplexObject">
> >     </wsdl:part>
> >   </wsdl:message>
> >   <wsdl:portType name="SomeServicePortType">
> >     <wsdl:operation name="getUsingString">
> >       <wsdl:input message="ns1:getUsingStringRequest"
> wsaw:Action="urn:getUsingString">
> >     </wsdl:input>
> >       <wsdl:output message="ns1:getUsingStringResponse"
> wsaw:Action="urn:getUsingStringResponse">
> >     </wsdl:output>
> >     </wsdl:operation>
> >     <wsdl:operation name="getUsingMoreComplexObject">
> >       <wsdl:input message="ns1:getUsingMoreComplexObjectRequest"
> wsaw:Action="urn:getUsingMoreComplexObject">
> >     </wsdl:input>
> >       <wsdl:output message="ns1:getUsingMoreComplexObjectResponse"
> wsaw:Action="urn:getUsingMoreComplexObjectResponse">
> >     </wsdl:output>
> >     </wsdl:operation>
> >   </wsdl:portType>
> >   <wsdl:binding name="SomeServiceHttpBinding"
> type="ns1:SomeServicePortType">
> >     <http:binding verb="POST"/>
> >     <wsdl:operation name="getUsingString">
> >       <http:operation location="SomeService/getUsingString"/>
> >       <wsdl:input>
> >         <mime:content part="getUsingString" type="text/xml"/>
> >       </wsdl:input>
> >       <wsdl:output>
> >         <mime:content part="getUsingString" type="text/xml"/>
> >       </wsdl:output>
> >     </wsdl:operation>
> >     <wsdl:operation name="getUsingMoreComplexObject">
> >       <http:operation location="SomeService/getUsingMoreComplexObject"/>
> >       <wsdl:input>
> >         <mime:content part="getUsingMoreComplexObject" type="text/xml"/>
> >       </wsdl:input>
> >       <wsdl:output>
> >         <mime:content part="getUsingMoreComplexObject" type="text/xml"/>
> >       </wsdl:output>
> >     </wsdl:operation>
> >   </wsdl:binding>
> >   <wsdl:binding name="SomeServiceSOAP11Binding"
> type="ns1:SomeServicePortType">
> >     <soap:binding style="document" transport="
> http://schemas.xmlsoap.org/soap/http"/>
> >     <wsdl:operation name="getUsingString">
> >       <soap:operation soapAction="urn:getUsingString" style="document"/>
> >       <wsdl:input>
> >         <soap:body use="literal"/>
> >       </wsdl:input>
> >       <wsdl:output>
> >         <soap:body use="literal"/>
> >       </wsdl:output>
> >     </wsdl:operation>
> >     <wsdl:operation name="getUsingMoreComplexObject">
> >       <soap:operation soapAction="urn:getUsingMoreComplexObject"
> 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="SomeServicePortType__SOAPBinding"
> type="ns1:SomeServicePortType">
> >     <soap:binding style="document" transport="
> http://schemas.xmlsoap.org/soap/http"/>
> >     <wsdl:operation name="getUsingString">
> >       <soap:operation soapAction=""/>
> >       <wsdl:input>
> >         <soap:body use="literal"/>
> >       </wsdl:input>
> >       <wsdl:output>
> >         <soap:body use="literal"/>
> >       </wsdl:output>
> >     </wsdl:operation>
> >     <wsdl:operation name="getUsingMoreComplexObject">
> >       <soap:operation soapAction=""/>
> >       <wsdl:input>
> >         <soap:body use="literal"/>
> >       </wsdl:input>
> >       <wsdl:output>
> >         <soap:body use="literal"/>
> >       </wsdl:output>
> >     </wsdl:operation>
> >   </wsdl:binding>
> >   <wsdl:service name="SomeService">
> >     <wsdl:port name="SomeServiceHttpport"
> binding="ns1:SomeServiceHttpBinding">
> >       <http:address location="http://localhost:8080/SomeServices"/>
> >     </wsdl:port>
> >     <wsdl:port name="SomeServiceSOAP11port_http"
> binding="ns1:SomeServiceSOAP11Binding">
> >       <soap:address location="http://localhost:8080/SomeServices"/>
> >     </wsdl:port>
> >   </wsdl:service>
> >   <wsdl:service name="SomeServicePortType__Service">
> >     <wsdl:port name="SomeServicePortType__SOAPHTTPPort"
> binding="ns1:SomeServicePortType__SOAPBinding">
> >       <soap:address location="http://localhost:8080/SomeServices"/>
> >     </wsdl:port>
> >   </wsdl:service>
> > </wsdl:definitions>
> > SOAP payload:
> > --------------------
> > <soapenv:Envelope xmlns:soapenv="
> http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service"
> xmlns:xsd="http://service/xsd">
> >    <soapenv:Header/>
> >    <soapenv:Body>
> >       <ser:getUsingMoreComplexObject>
> >          <ser:param0>
> >             <xsd:intParam>12</xsd:intParam>
> >             <xsd:stringParam>Param_1</xsd:stringParam>
> >             <xsd:stringParam2>Param2</xsd:stringParam2>
> >          </ser:param0>
> >       </ser:getUsingMoreComplexObject>
> >    </soapenv:Body>
> > </soapenv:Envelope>
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>

Re: Question about: (TUSCANY-2388) Data binding does not work when Java interface & implementation (where method param is not String, primitive) exposed with a web services binding

Posted by Raymond Feng <en...@gmail.com>.
Hi,

Please see my comments inline.

Thanks,
Raymond

--------------------------------------------------
From: "Scott Kurz" <sc...@gmail.com>
Sent: Wednesday, June 25, 2008 6:34 AM
To: <de...@tuscany.apache.org>
Subject: Question about: (TUSCANY-2388) Data binding does not work when Java 
interface & implementation (where method param is not String, primitive) 
exposed with a web services binding

> This seems like an interesting issue and I was curious about a couple
> things:
>
> First, I'm wondering why I didn't recreate the error that others noticed.
> Any ideas?

What level of Tuscany code are you using? I'm using the trunk.

>
> Next, I was wondering what implications there are here.   I'm not 100% 
> sure
> but I'm guessing in the bottom-up case, without the Java wrapper
> we would do child-to-child data transform instead of wrapper-to-wrapper 
> (in
> spite of the fact that the WSDL we gen is wrapped).

This case is about to have a regular JAX-WS client to talk to the Web 
Service exposed by Tuscany for a SCA component with a java interface. We now 
generate wrapper bean classes dynamically during runtime if the wrapper 
classes are not present.

>
> So does this imply that we always need the Java wrappers to deserialize 
> XML
> in the elementFormDefault=qualified style?

If we start from a WSDL operation whose wrapper element has a qualified 
form, I expect the java interface will be generated from the WSDL and it 
bears the JAXWS annotations to customize the namespace attr on the @WebParam 
or @WebResult.

>
> This doesn't seem too burdensome for the user, just trying to 
> understand...
>
> Scott
>
>
>
> On Sat, Jun 21, 2008 at 2:03 AM, Raymond Feng (JIRA) 
> <de...@tuscany.apache.org>
> wrote:
>
>>
>>     [
>> https://issues.apache.org/jira/browse/TUSCANY-2388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel]
>>
>> Raymond Feng resolved TUSCANY-2388.
>> -----------------------------------
>>
>>    Resolution: Fixed
>>
>> I confirmed it's now fixed by r670103.
>>
>> > Data binding does not work when Java interface & implementation (where
>> method param is not String, primitive) exposed with a web services 
>> binding
>> >
>> --------------------------------------------------------------------------------------------------------------------------------------------------
>> >
>> >                 Key: TUSCANY-2388
>> >                 URL: https://issues.apache.org/jira/browse/TUSCANY-2388
>> >             Project: Tuscany
>> >          Issue Type: Bug
>> >          Components: Java SCA Data Binding Runtime
>> >    Affects Versions: Java-SCA-1.1
>> >         Environment: Windows XP; IBM J2RE 1.5.0 (Build 2.3)
>> >            Reporter: Peter Kemp
>> >            Assignee: Raymond Feng
>> >         Attachments: testcase.zip
>> >
>> >
>> > 1. Create a component with a java implementation, with a service 
>> > defined
>> by a Java interface.
>> > The parameter to the method is not a String, primitive or wrapper -
>> rather, it's a class containing a couple of Strings and an Integer.
>> > 2. Expose the service with a webservice binding.
>> > 3. Deploy the composite (as a WAR or embedded).
>> > 4. Retrieve the WSDL for the service (eg from
>> http://localhost:8080/SomeServices?wsdl).
>> > 5. Generate a web service request from the WSDL.
>> > The runtime fails to map the web service request message to the
>> implementation class method parameters - it calls the correct method, but
>> the method parameter is null.
>> > The test works fine when the parameter is a String.
>> > Composite definition (some.composite):
>> > -------------------------------------------------------
>> > <?xml version="1.0" encoding="UTF-8"?>
>> > <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="
>> http://test" xmlns:test="http://test" name="some">
>> >     <service name="SomeServices" promote="SomeServicesComponent">
>> >         <binding.ws uri="http://localhost:8080/SomeServices"/>
>> >     </service>
>> >     <component name="SomeServicesComponent">
>> >         <implementation.java class="service.SomeServiceImpl"/>
>> >         <service name="SomeService">
>> >             <interface.java interface="service.SomeService" />
>> >         </service>
>> >     </component>
>> > </composite>
>> > Service interface:
>> > -----------------------
>> > /**
>> >  *
>> >  */
>> > package service;
>> > import org.osoa.sca.annotations.Remotable;
>> > @Remotable
>> > public interface SomeService {
>> >
>> >     public AnObject getUsingString(String stringParam);
>> >     public AnObject getUsingMoreComplexObject(MoreComplexObject
>> moreComplexParam);
>> >
>> > }
>> > Implementation:
>> > ----------------------
>> > package service;
>> > import org.osoa.sca.annotations.Service;
>> > @Service(SomeService.class)
>> > public class SomeServiceImpl implements SomeService {
>> >     public AnObject getUsingString(String stringParam) {
>> >         System.out.println("Param value:" + stringParam);
>> >         return getAnObject(stringParam);
>> >     }
>> >     private AnObject getAnObject(String stringParam) {
>> >         // TODO Auto-generated method stub
>> >         return new AnObject(stringParam + "123", 123);
>> >     }
>> >     public AnObject getUsingMoreComplexObject(MoreComplexObject
>> moreComplexParam) {
>> >         System.out.println("Param value:" +
>> moreComplexParam.getStringParam());
>> >
>> >         return getAnObject(moreComplexParam.getStringParam());
>> >     }
>> >
>> > }
>> > MoreComplexObject.java
>> > -----------------------------------
>> > /**
>> >  *
>> >  */
>> > package service;
>> > import java.io.Serializable;
>> > public class MoreComplexObject implements Serializable{
>> >     private static final long serialVersionUID = 43242314234123L;
>> >     private String stringParam;
>> >     private Integer intParam;
>> >     private String stringParam2;
>> >     public String getStringParam() {
>> >         return stringParam;
>> >     }
>> >     public void setStringParam(String stringParam) {
>> >         this.stringParam = stringParam;
>> >     }
>> >     public Integer getIntParam() {
>> >         return intParam;
>> >     }
>> >     public void setIntParam(Integer intParam) {
>> >         this.intParam = intParam;
>> >     }
>> >     public String getStringParam2() {
>> >         return stringParam2;
>> >     }
>> >     public void setStringParam2(String stringParam2) {
>> >         this.stringParam2 = stringParam2;
>> >     }
>> >
>> > }
>> > AnObject.java
>> > -------------
>> > package service;
>> > public class AnObject {
>> >     private String someRetValue;
>> >     private Integer someOtherRetValue;
>> >
>> >     public AnObject() {
>> >     }
>> >     public AnObject(String someRetValue, Integer someOtherRetValue) {
>> >         this.someRetValue = someRetValue;
>> >         this.someOtherRetValue = someOtherRetValue;
>> >     }
>> >     /**
>> >      * @return the someOtherRetValue
>> >      */
>> >     public Integer getSomeOtherRetValue() {
>> >         return someOtherRetValue;
>> >     }
>> >     /**
>> >      * @param someOtherRetValue the someOtherRetValue to set
>> >      */
>> >     public void setSomeOtherRetValue(Integer someOtherRetValue) {
>> >         this.someOtherRetValue = someOtherRetValue;
>> >     }
>> >     /**
>> >      * @return the someRetValue
>> >      */
>> >     public String getSomeRetValue() {
>> >         return someRetValue;
>> >     }
>> >     /**
>> >      * @param someRetValue the someRetValue to set
>> >      */
>> >     public void setSomeRetValue(String someRetValue) {
>> >         this.someRetValue = someRetValue;
>> >     }
>> >
>> >
>> > }
>> > WSDL returned by http://localhost:8080/SomeServices?wsdl
>> >
>> -------------------------------------------------------------------------------------------
>> > <?xml version="1.0" encoding="UTF-8"?>
>> > <wsdl:definitions targetNamespace="http://service" xmlns:soap12="
>> http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="
>> http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="
>> http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xs="
>> http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://service/xsd"
>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="
>> http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsaw="
>> http://www.w3.org/2006/05/addressing/wsdl" xmlns:ns1="http://service">
>> >   <wsdl:types>
>> >     <xs:schema attributeFormDefault="qualified"
>> elementFormDefault="qualified" targetNamespace="http://service/xsd"
>> xmlns:ax21="http://service/xsd">
>> >          <xs:complexType name="MoreComplexObject">
>> >             <xs:sequence>
>> >                <xs:element minOccurs="0" name="intParam" 
>> > nillable="true"
>> type="xs:int"/>
>> >                <xs:element minOccurs="0" name="stringParam"
>> nillable="true" type="xs:string"/>
>> >                <xs:element minOccurs="0" name="stringParam2"
>> nillable="true" type="xs:string"/>
>> >             </xs:sequence>
>> >          </xs:complexType>
>> >          <xs:complexType name="AnObject">
>> >             <xs:sequence>
>> >                <xs:element minOccurs="0" name="someOtherRetValue"
>> nillable="true" type="xs:int"/>
>> >                <xs:element minOccurs="0" name="someRetValue"
>> nillable="true" type="xs:string"/>
>> >             </xs:sequence>
>> >          </xs:complexType>
>> >       </xs:schema>
>> >     <xs:schema attributeFormDefault="qualified"
>> elementFormDefault="qualified" targetNamespace="http://service" 
>> xmlns:ns="
>> http://service">
>> >          <xs:element name="getUsingMoreComplexObject">
>> >             <xs:complexType>
>> >                <xs:sequence>
>> >                   <xs:element minOccurs="0" name="param0" 
>> > nillable="true"
>> type="ns0:MoreComplexObject"/>
>> >                </xs:sequence>
>> >             </xs:complexType>
>> >          </xs:element>
>> >          <xs:element name="getUsingMoreComplexObjectResponse">
>> >             <xs:complexType>
>> >                <xs:sequence>
>> >                   <xs:element minOccurs="0" name="return" 
>> > nillable="true"
>> type="ns0:AnObject"/>
>> >                </xs:sequence>
>> >             </xs:complexType>
>> >          </xs:element>
>> >          <xs:element name="getUsingString">
>> >             <xs:complexType>
>> >                <xs:sequence>
>> >                   <xs:element minOccurs="0" name="param0" 
>> > nillable="true"
>> type="xs:string"/>
>> >                </xs:sequence>
>> >             </xs:complexType>
>> >          </xs:element>
>> >          <xs:element name="getUsingStringResponse">
>> >             <xs:complexType>
>> >                <xs:sequence>
>> >                   <xs:element minOccurs="0" name="return" 
>> > nillable="true"
>> type="ns0:AnObject"/>
>> >                </xs:sequence>
>> >             </xs:complexType>
>> >          </xs:element>
>> >       </xs:schema>
>> >   </wsdl:types>
>> >   <wsdl:message name="getUsingStringResponse">
>> >     <wsdl:part name="parameters" element="ns1:getUsingStringResponse">
>> >     </wsdl:part>
>> >   </wsdl:message>
>> >   <wsdl:message name="getUsingMoreComplexObjectResponse">
>> >     <wsdl:part name="parameters"
>> element="ns1:getUsingMoreComplexObjectResponse">
>> >     </wsdl:part>
>> >   </wsdl:message>
>> >   <wsdl:message name="getUsingStringRequest">
>> >     <wsdl:part name="parameters" element="ns1:getUsingString">
>> >     </wsdl:part>
>> >   </wsdl:message>
>> >   <wsdl:message name="getUsingMoreComplexObjectRequest">
>> >     <wsdl:part name="parameters" 
>> > element="ns1:getUsingMoreComplexObject">
>> >     </wsdl:part>
>> >   </wsdl:message>
>> >   <wsdl:portType name="SomeServicePortType">
>> >     <wsdl:operation name="getUsingString">
>> >       <wsdl:input message="ns1:getUsingStringRequest"
>> wsaw:Action="urn:getUsingString">
>> >     </wsdl:input>
>> >       <wsdl:output message="ns1:getUsingStringResponse"
>> wsaw:Action="urn:getUsingStringResponse">
>> >     </wsdl:output>
>> >     </wsdl:operation>
>> >     <wsdl:operation name="getUsingMoreComplexObject">
>> >       <wsdl:input message="ns1:getUsingMoreComplexObjectRequest"
>> wsaw:Action="urn:getUsingMoreComplexObject">
>> >     </wsdl:input>
>> >       <wsdl:output message="ns1:getUsingMoreComplexObjectResponse"
>> wsaw:Action="urn:getUsingMoreComplexObjectResponse">
>> >     </wsdl:output>
>> >     </wsdl:operation>
>> >   </wsdl:portType>
>> >   <wsdl:binding name="SomeServiceHttpBinding"
>> type="ns1:SomeServicePortType">
>> >     <http:binding verb="POST"/>
>> >     <wsdl:operation name="getUsingString">
>> >       <http:operation location="SomeService/getUsingString"/>
>> >       <wsdl:input>
>> >         <mime:content part="getUsingString" type="text/xml"/>
>> >       </wsdl:input>
>> >       <wsdl:output>
>> >         <mime:content part="getUsingString" type="text/xml"/>
>> >       </wsdl:output>
>> >     </wsdl:operation>
>> >     <wsdl:operation name="getUsingMoreComplexObject">
>> >       <http:operation 
>> > location="SomeService/getUsingMoreComplexObject"/>
>> >       <wsdl:input>
>> >         <mime:content part="getUsingMoreComplexObject" 
>> > type="text/xml"/>
>> >       </wsdl:input>
>> >       <wsdl:output>
>> >         <mime:content part="getUsingMoreComplexObject" 
>> > type="text/xml"/>
>> >       </wsdl:output>
>> >     </wsdl:operation>
>> >   </wsdl:binding>
>> >   <wsdl:binding name="SomeServiceSOAP11Binding"
>> type="ns1:SomeServicePortType">
>> >     <soap:binding style="document" transport="
>> http://schemas.xmlsoap.org/soap/http"/>
>> >     <wsdl:operation name="getUsingString">
>> >       <soap:operation soapAction="urn:getUsingString" 
>> > style="document"/>
>> >       <wsdl:input>
>> >         <soap:body use="literal"/>
>> >       </wsdl:input>
>> >       <wsdl:output>
>> >         <soap:body use="literal"/>
>> >       </wsdl:output>
>> >     </wsdl:operation>
>> >     <wsdl:operation name="getUsingMoreComplexObject">
>> >       <soap:operation soapAction="urn:getUsingMoreComplexObject"
>> 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="SomeServicePortType__SOAPBinding"
>> type="ns1:SomeServicePortType">
>> >     <soap:binding style="document" transport="
>> http://schemas.xmlsoap.org/soap/http"/>
>> >     <wsdl:operation name="getUsingString">
>> >       <soap:operation soapAction=""/>
>> >       <wsdl:input>
>> >         <soap:body use="literal"/>
>> >       </wsdl:input>
>> >       <wsdl:output>
>> >         <soap:body use="literal"/>
>> >       </wsdl:output>
>> >     </wsdl:operation>
>> >     <wsdl:operation name="getUsingMoreComplexObject">
>> >       <soap:operation soapAction=""/>
>> >       <wsdl:input>
>> >         <soap:body use="literal"/>
>> >       </wsdl:input>
>> >       <wsdl:output>
>> >         <soap:body use="literal"/>
>> >       </wsdl:output>
>> >     </wsdl:operation>
>> >   </wsdl:binding>
>> >   <wsdl:service name="SomeService">
>> >     <wsdl:port name="SomeServiceHttpport"
>> binding="ns1:SomeServiceHttpBinding">
>> >       <http:address location="http://localhost:8080/SomeServices"/>
>> >     </wsdl:port>
>> >     <wsdl:port name="SomeServiceSOAP11port_http"
>> binding="ns1:SomeServiceSOAP11Binding">
>> >       <soap:address location="http://localhost:8080/SomeServices"/>
>> >     </wsdl:port>
>> >   </wsdl:service>
>> >   <wsdl:service name="SomeServicePortType__Service">
>> >     <wsdl:port name="SomeServicePortType__SOAPHTTPPort"
>> binding="ns1:SomeServicePortType__SOAPBinding">
>> >       <soap:address location="http://localhost:8080/SomeServices"/>
>> >     </wsdl:port>
>> >   </wsdl:service>
>> > </wsdl:definitions>
>> > SOAP payload:
>> > --------------------
>> > <soapenv:Envelope xmlns:soapenv="
>> http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service"
>> xmlns:xsd="http://service/xsd">
>> >    <soapenv:Header/>
>> >    <soapenv:Body>
>> >       <ser:getUsingMoreComplexObject>
>> >          <ser:param0>
>> >             <xsd:intParam>12</xsd:intParam>
>> >             <xsd:stringParam>Param_1</xsd:stringParam>
>> >             <xsd:stringParam2>Param2</xsd:stringParam2>
>> >          </ser:param0>
>> >       </ser:getUsingMoreComplexObject>
>> >    </soapenv:Body>
>> > </soapenv:Envelope>
>>
>> --
>> This message is automatically generated by JIRA.
>> -
>> You can reply to this email to add a comment to the issue online.
>>
>>
>