Thank yo very much, Amila. This change has worked great for three of the
four web service methods. But the fourth method (in the original wsdl,
included below), which follows a somewhat different naming convention, still
causes an empty method which takes no parameter and returns void to be
included in the xyzServiceSkeleton module. Here are what I believe are the
relevant portions of the wsdl:
<element name="findVehicle">
<complexType>
<sequence>
<element name="vehicle" type="tns:Vehicle"/>
<element name="attribute" type="string"/>
</sequence>
</complexType>
</element>
<element name="findVehicleResponse">
<complexType>
<sequence>
<element name="acesOptions" type="tns:AcesOptions"/>
<element name="vehicle" type="tns:Vehicle"/>
</sequence>
</complexType>
</element>
<wsdl:message name="findVehicleRequestMessage">
<wsdl:part element="wns:findVehicle" name="input"/>
</wsdl:message>
<wsdl:message name="findVehicleResponseMessage">
<wsdl:part element="wns:findVehicleResponse" name="output"/>
</wsdl:message>
<wsdl:operation name="findVehicle" parameterOrder="input">
<wsdl:input message="wns:findVehicleRequestMessage"/>
<!--name attribute removed -->
<wsdl:output message="wns:findVehicleResponseMessage"/>
<!--name attribute removed -->
</wsdl:operation>
Thanks very much again. . . Bill
-----Original Message-----
From: Amila Suriarachchi [mailto:[EMAIL PROTECTED]
Sent: Thursday, April 05, 2007 5:35 AM
To: [email protected]; [EMAIL PROTECTED]
Subject: Re: All Methods in ServiceSkeleton Generated by WSDL2Java.bat
with Void Return Types
hi,
in your operations you have specified the input name as it is in the
Message name
<wsdl:operation name="VehicleWithIdPlusTenThousand"
parameterOrder="input">
<wsdl:input message="wns:VehicleWithIdPlusTenThousandRequestMessage"
name="VehicleWithIdPlusTenThousandRequestMessage"/>
<wsdl:output
message="wns:VehicleWithIdPlusTenThousandResponseMessage"
name="VehicleWithIdPlusTenThousandResponseMessage"/>
</wsdl:operation>
here message name (VehicleWithIdPlus
TenThousandRequestMessage) and the input name (VehicleWithIdPlusTenThou
sandRequestMessage) are equeal.
In this case wsdl4j set null to wsdlmessage. I am not sure this is wrong
with the wsdl spec. But removing input and output message names would make
it fine.
<wsdl:operation name="VehicleWithIdPlusTenThousand"
parameterOrder="input">
<wsdl:input message="wns:VehicleWithIdPlusTenThousandRequestMessage"
/>
<wsdl:output
message="wns:VehicleWithIdPlusTenThousandResponseMessage" />
</wsdl:operation>
On 4/4/07, Bill Treuman <[EMAIL PROTECTED] > wrote:
I'm using wsdl2java.bat to generate the Axis2 server-side, as follows:
wsdl2java -uri testVehicle.wsdl -p com.carquest.ws.testvehicle -o
server -s -ss -sd -d adb -wv 1.1
Oddly, in the generated file xyzServiceSkeleton.java, every generated
method
has a void return type and takes no input arguments. Likewise, in the
generated file xyzServiceMessageReceiverInOut.java, every referenced
method
uses getDefaultEnvelope( ). Here is an example of the generated code in
the
latter file:
//doc style
skel.AcesOptions();
envelope = getSOAPFactory(msgContext).getDefaultEnvelope();
When I generate your sample service and client, from Axis2UserGuide, the
proper argument values and return types are included, and the code in
the
generated MessageReceiverInOut reflects this.
I presume there must be some problem in my wsdl file, but I can't find
it.
The entire contents of testVehicle.wsdl follows. What am I missing?
Thank you very much.
-----------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://ws.carquest.com/2006/services/vehicle "
xmlns:wns="http://ws.carquest.com/2006/services/vehicle"
xmlns:tns="http://ws.carquest.com/2006/types/vehicle "
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/ ">
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://ws.carquest.com/2006/services/vehicle "
xmlns="http://www.w3.org/2001/XMLSchema">
<!--
This wsdl is used for my initial XmlBeans test.
There is no double-wrapping of any request or response soap
element.
The xxxServiceSkeleton.java module is generated by WSDL2Java.
(The
generated
methods contain empty method bodies, which must be populated
with
the
desired functionality).
The operation name in the <portType> section becomes the name of
the
method
in xxxServiceSkeleton.java.
The request element name such as
VehicleWithIdPlusTenThousandRequest
directly below
becomes the (only) parameter name in the xxxServiceSkeleton.java
method. Each
method generated by WSDL2Java receives one and only one
parameter.
The response element name such as
VehicleWithIdPlusTenThousandResponse
directly
below becomes the return type from the xxxServiceSkeleton.java
method (unless
the method returns void, when there is no response element
below).
The interior elements below such as componentName and vehicle can
be
accessed
via get/set methods in the parameter type, e.g.
VehicleWithIdPlusTenThousandRequest.getComponentname().
Likewise multiple interior elements in the method response type
can be
accessed
via code such as . . .
The request and response element names are both present in the
corresponding soap
messages, directly below <soapenv:Body>. So are the interior
element names such
as echoString in the request and response above. These interior
elements are
direct children of the request or response soap elements.
-->
<element name="VehicleWithIdPlusTenThousandRequest">
<complexType>
<sequence>
<element name="componentName" type="string"/>
<element name="vehicle" type="tns:Vehicle"/>
</sequence>
</complexType>
</element>
<element name="VehicleWithIdPlusTenThousandResponse">
<complexType>
<sequence>
<element name="vehicle" type="tns:Vehicle"/>
</sequence>
</complexType>
</element>
<element name="AcesAttributeRequest">
<complexType>
<sequence />
</complexType>
</element>
<element name="AcesAttributeResponse">
<complexType>
<sequence>
<element name="acesAttribute" type="tns:AcesAttribute"/>
</sequence>
</complexType>
</element>
<element name="AcesOptionsRequest">
<complexType>
<sequence>
<element name="id" type="string"/>
</sequence>
</complexType>
</element>
<element name="AcesOptionsResponse">
<complexType>
<sequence>
<element name="AcesOptionsBlock" type="tns:AcesOptions"/>
</sequence>
</complexType>
</element>
<element name="findVehicle">
<complexType>
<sequence>
<element name="vehicle" type="tns:Vehicle"/>
<element name="attribute" type="string"/>
</sequence>
</complexType>
</element>
<element name="findVehicleResponse">
<complexType>
<sequence>
<element name="acesOptions" type="tns:AcesOptions"/>
<element name="vehicle" type="tns:Vehicle"/>
</sequence>
</complexType>
</element>
</schema>
<!-- Note the schema shown above is for services/vehicle. -->
<!-- The second schema shown below is for types/vehicle. -->
<schema elementFormDefault="qualified"
targetNamespace="http://ws.carquest.com/2006/types/vehicle"
xmlns=" http://www.w3.org/2001/XMLSchema">
<complexType name="Vehicle">
<sequence>
<element name="vehicle" type="nonNegativeInteger"
minOccurs="0"/>
<element name="year" type="nonNegativeInteger" minOccurs="0"/>
<element name="make" type="nonNegativeInteger" minOccurs="0"/>
<element name="model" type="nonNegativeInteger"
minOccurs="0"/>
<element name="submodel" type="nonNegativeInteger"
minOccurs="0"/>
<element name="region" type="nonNegativeInteger"
minOccurs="0"/>
<element name="bedConfig" type="nonNegativeInteger"
minOccurs="0"/>
<element name="bedLength" type="nonNegativeInteger"
minOccurs="0"/>
<element name="bedType" type="nonNegativeInteger"
minOccurs="0"/>
</sequence>
</complexType>
<complexType name="AcesAttribute">
<sequence>
<element name="option" type="string"/>
</sequence>
</complexType>
<complexType name="AcesOption">
<sequence>
<element name="id" type="nonNegativeInteger"/>
<element name="description" type="string"/>
</sequence>
</complexType>
<complexType name="AcesOptions">
<sequence>
<element name="attribute" type="string"/>
<element name="option" type="tns:AcesOption"
maxOccurs="unbounded"/>
</sequence>
</complexType>
</schema>
</wsdl:types>
<wsdl:message name="VehicleWithIdPlusTenThousandRequestMessage">
<wsdl:part element="wns:VehicleWithIdPlusTenThousandRequest"
name="input"/>
</wsdl:message>
<wsdl:message name="VehicleWithIdPlusTenThousandResponseMessage">
<wsdl:part element="wns:VehicleWithIdPlusTenThousandResponse"
name="output"/>
</wsdl:message>
<wsdl:message name="AcesAttributeRequestMessage">
<wsdl:part element="wns:AcesAttributeRequest" name="input"/>
</wsdl:message>
<wsdl:message name="AcesAttributeResponseMessage">
<wsdl:part element="wns:AcesAttributeResponse" name="output"/>
</wsdl:message>
<wsdl:message name="AcesOptionsRequestMessage">
<wsdl:part element="wns:AcesOptionsRequest" name="input"/>
</wsdl:message>
<wsdl:message name="AcesOptionsResponseMessage">
<wsdl:part element="wns:AcesOptionsResponse" name="output"/>
</wsdl:message>
<wsdl:message name="findVehicleRequestMessage">
<wsdl:part element="wns:findVehicle" name="input"/>
</wsdl:message>
<wsdl:message name="findVehicleResponseMessage">
<wsdl:part element="wns:findVehicleResponse" name="output"/>
</wsdl:message>
<wsdl:portType name="TestVehiclePortType">
<wsdl:operation name="VehicleWithIdPlusTenThousand"
parameterOrder="input">
<wsdl:input
message="wns:VehicleWithIdPlusTenThousandRequestMessage"
name="VehicleWithIdPlusTenThousandRequestMessage"/>
<wsdl:output
message="wns:VehicleWithIdPlusTenThousandResponseMessage"
name="VehicleWithIdPlusTenThousandResponseMessage"/>
</wsdl:operation>
<wsdl:operation name="AcesAttribute" parameterOrder="input">
<wsdl:input message="wns:AcesAttributeRequestMessage"
name="AcesAttributeRequestMessage"/>
<wsdl:output message="wns:AcesAttributeResponseMessage"
name="AcesAttributeResponseMessage"/>
</wsdl:operation>
<wsdl:operation name="AcesOptions" parameterOrder="input">
<wsdl:input message="wns:AcesOptionsRequestMessage"
name="AcesOptionsRequestMessage"/>
<wsdl:output message="wns:AcesOptionsResponseMessage"
name="AcesOptionsResponseMessage"/>
</wsdl:operation>
<wsdl:operation name="findVehicle" parameterOrder="input">
<wsdl:input message="wns:findVehicleRequestMessage"
name="findVehicleRequestMessage"/>
<wsdl:output message="wns:findVehicleResponseMessage"
name="findVehicleResponseMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestVehicleSoapBinding"
type="wns:TestVehiclePortType">
<wsdlsoap:binding style="document"
transport=" http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="VehicleWithIdPlusTenThousand">
<wsdlsoap:operation soapAction="VehicleWithIdPlusTenThousand"/>
<wsdl:input name="VehicleWithIdPlusTenThousandRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="VehicleWithIdPlusTenThousandResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AcesAttribute">
<wsdlsoap:operation soapAction="AcesAttribute"/>
<wsdl:input name="AcesAttributeRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AcesAttributeResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AcesOptions">
<wsdlsoap:operation soapAction="AcesOptions"/>
<wsdl:input name="AcesOptionsRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="AcesOptionsResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="findVehicle">
<wsdlsoap:operation soapAction="AcesOptions"/>
<wsdl:input name="findVehicle">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="findVehicleResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TestVehicleService">
<wsdl:port binding="wns:TestVehicleSoapBinding" name="TestVehicle">
<wsdlsoap:address
location="http://localhost:8080/axis2/services/testVehicle "/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Amila Suriarachchi,
WSO2 Inc.