Still not working. This is what I am getting now:
public AccountSummariesResponse getAccountSummaries(
AccountSummaries accountSummaries);
Not only is the result wrapped, I am also getting a parameter that's not needed.
Here's the modified wsdl (I think I got everything you suggested):
<definitions
targetNamespace="http://myapp.org/account.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:acnt="http://myapp.org/account.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://myapp.org/account.wsdl">
<types>
<xsd:schema
targetNamespace="http://myapp.org/account.xsd"
elementFormDefault="qualified"
xmlns:tns="http://myapp.org/account.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="AccountSummaries">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="AccountSummariesResponse"
type="tns:AccountSummariesResponse" />
<xsd:complexType name="AccountSummariesResponse">
<xsd:sequence>
<xsd:element name="AccountSummary" type="tns:AccountSummary"
minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AccountSummary">
<xsd:sequence>
<xsd:element name="id" type="xsd:long" />
<xsd:element name="cash" type="xsd:decimal" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="AccountSummariesRequest">
<part name="AccountSummaries" element="acnt:AccountSummaries" />
</message>
<message name="AccountSummariesResponse">
<part name="AccountSummariesResponse"
element="acnt:AccountSummariesResponse" />
</message>
<portType name="AccountProvider">
<operation name="GetAccountSummaries">
<input message="tns:AccountSummariesRequest" />
<output message="tns:AccountSummariesResponse" />
</operation>
</portType>
<binding name="AccountBinding" type="tns:AccountProvider">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="GetAccountSummaries">
<soap:operation soapAction="GetAccountSummaries" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="AccountService">
<port name="AccountPort" binding="tns:AccountBinding">
<soap:address
location="http://localhost:8080/myapp/services/account" />
</port>
</service>
</definitions>
Thanks.
Naresh
-----Original Message-----
From: Daniel Kulp [mailto:[email protected]]
Sent: Monday, April 05, 2010 2:27 AM
To: [email protected]
Cc: Naresh Bhatia
Subject: Re: wsdl2java - creating List return type
1) Change the AccountSummaries element name to AccountSummariesResponse.
2) Create a new AccountSummaries element that is a empty sequence complexType.
3) Change the AccountSummariesRequest message to contain a single part that
points at that new element.
Dan
On Monday 05 April 2010 12:53:47 am Naresh Bhatia wrote:
> I am trying to write an operation in WSDL that returns a list. Essentially,
> I want wsdl2java to generate the following method for me:
>
> public List<AccountSummary> getAccountSummaries();
>
> How do I do this? I tried different things, but I always end up with
> wsdl2java creating a wrapper over the list and returning this wrapper,
> e.g.
>
> public AccountSummaries getAccountSummaries();
>
> where AccountSummaries wraps a List<AccountSummary>.
>
> Here's my WSDL. Can someone show me how to change it so that the
> getAccountSummaries() method returns an unwrapped list?
>
> <definitions
> targetNamespace="http://myapp.org/account.wsdl"
> xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:acnt="http://myapp.org/account.xsd"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://myapp.org/account.wsdl">
>
> <types>
> <xsd:schema
> targetNamespace="http://myapp.org/account.xsd"
> elementFormDefault="qualified"
> xmlns:tns="http://myapp.org/account.xsd"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>
> <xsd:element name="AccountSummaries"
> type="tns:AccountSummaries" />
>
> <xsd:complexType name="AccountSummaries">
> <xsd:sequence>
> <xsd:element name="AccountSummary"
> type="tns:AccountSummary" minOccurs="0" maxOccurs="unbounded" />
> </xsd:sequence>
> </xsd:complexType>
>
> <xsd:complexType name="AccountSummary">
> <xsd:sequence>
> <xsd:element name="id" type="xsd:long" />
> <xsd:element name="cash" type="xsd:decimal" />
> </xsd:sequence>
> </xsd:complexType>
>
> </xsd:schema>
> </types>
>
> <message name="AccountSummariesRequest" />
>
> <message name="AccountSummariesResponse">
> <part name="AccountSummaries" element="acnt:AccountSummaries" />
> </message>
>
> <portType name="AccountProvider">
> <operation name="GetAccountSummaries">
> <input message="tns:AccountSummariesRequest" />
> <output message="tns:AccountSummariesResponse" />
> </operation>
> </portType>
>
> <binding name="AccountBinding" type="tns:AccountProvider">
> <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http" /> <operation
> name="GetAccountSummaries">
> <soap:operation soapAction="GetAccountSummaries" />
> <input>
> <soap:body use="literal" />
> </input>
> <output>
> <soap:body use="literal" />
> </output>
> </operation>
> </binding>
>
> <service name="AccountService">
> <port name="AccountPort" binding="tns:AccountBinding">
> <soap:address
> location="http://localhost:8080/myapp/services/account" /> </port>
> </service>
>
> </definitions>
>
>
> Thanks.
> Naresh
--
Daniel Kulp
[email protected]
http://dankulp.com/blog