You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-user@ws.apache.org by Ma...@nokia.com on 2003/05/03 16:29:23 UTC
How to start from scratch with WS-if
hi all,
i am trying to start from a wsdl file in WS-IF and generate classes, but
i am having problems.
i took the addressbook.wsdl file from samples\localjava directory, and i run
following command
java org.apache.axis.wsdl.WSDL2Java AddressBook.wsdl
however,the interface 'AddressBook.java' is never generated.
as of documentation of axis, above command shold produce
For each entry in the type section A java class
A holder if this type is used as an inout/out parameter
For each portType A java interface
For each binding A stub class
For each service A service interface
A service implementation (the locator
however, from following WSDL (addressbook.wsdl)
<?xml version="1.0" ?>
<definitions targetNamespace="http://wsifservice.addressbook/"
xmlns:tns="http://wsifservice.addressbook/"
xmlns:typens="http://wsiftypes.addressbook.stub.client.localjava/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<!-- type defs -->
<types>
<xsd:schema
targetNamespace="http://wsiftypes.addressbook.stub.client.localjava/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<xsd:complexType name="phone">
<xsd:sequence>
<xsd:element name="areaCode" type="xsd:int"/>
<xsd:element name="exchange" type="xsd:string"/>
<xsd:element name="number" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="address">
<xsd:sequence>
<xsd:element name="streetNum" type="xsd:int"/>
<xsd:element name="streetName" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zip" type="xsd:int"/>
<xsd:element name="phoneNumber" type="typens:phone"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<!-- message declns -->
<message name="AddEntryWholeNameRequestMessage">
<part name="name" type="xsd:string"/>
<part name="address" type="typens:address"/>
</message>
<message name="AddEntryFirstAndLastNamesRequestMessage">
<part name="firstName" type="xsd:string"/>
<part name="lastName" type="xsd:string"/>
<part name="address" type="typens:address"/>
</message>
<message name="GetAddressFromNameRequestMessage">
<part name="name" type="xsd:string"/>
</message>
<message name="GetAddressFromNameResponseMessage">
<part name="address" type="typens:address"/>
</message>
<!-- port type declns -->
<portType name="AddressBook">
<operation name="addEntry">
<input name="AddEntryWholeNameRequest" message="tns:AddEntryWholeNameRequestMessage"/>
</operation>
<operation name="addEntry">
<input name="AddEntryFirstAndLastNamesRequest" message="tns:AddEntryFirstAndLastNamesRequestMessage"/>
</operation>
<operation name="getAddressFromName">
<input name="GetAddressFromNameRequest" message="tns:GetAddressFromNameRequestMessage"/>
<output name="GetAddressFromNameResponse" message="tns:GetAddressFromNameResponseMessage"/>
</operation>
</portType>
<!-- binding declns -->
<binding name="JavaBinding" type="tns:AddressBook">
<java:binding/>
<format:typeMapping encoding="Java" style="Java">
<format:typeMap typeName="typens:address" formatType="localjava.client.stub.addressbook.wsiftypes.Address" />
<format:typeMap typeName="xsd:string" formatType="java.lang.String" />
</format:typeMapping>
<operation name="addEntry">
<java:operation
methodName="addEntry"
parameterOrder="name address"
methodType="instance" />
<input name="AddEntryWholeNameRequest"/>
</operation>
<operation name="addEntry">
<java:operation
methodName="addEntry"
parameterOrder="firstName lastName address"
methodType="instance" />
<input name="AddEntryFirstAndLastNamesRequest"/>
</operation>
<operation name="getAddressFromName">
<java:operation
methodName="getAddressFromName"
parameterOrder="name"
methodType="instance"
returnPart="address" />
<input name="GetAddressFromNameRequest"/>
<output name="GetAddressFromNameResponse"/>
</operation>
</binding>
<!-- service decln -->
<service name="AddressBookService">
<port name="JavaPort" binding="tns:JavaBinding">
<java:address className="localjava.service.AddressBookImpl"/>
</port>
</service>
</definitions>
i never obtain the interface AddressBook..
where is the 'trick'?
thanx and regards
marco
> -----Original Message-----
> From: ext Roberto Podesta' [mailto:ropode@laser.dist.unige.it]
> Sent: 03 May, 2003 17:23
> To: wsif-user@ws.apache.org
> Subject: Re: getting started /help
>
>
> SOAP2.3 gives support to the Java Hashtable like to the Java
> String, maybe
> you have only to write:
> <part name="name" type="xsd:hashtable"/>
> instead of
> <part name="name" type="java.util.Hashtable"/>
>
>
>
> ----- Original Message -----
> From: <Ma...@nokia.com>
> To: <ws...@ws.apache.org>
> Sent: Saturday, May 03, 2003 3:32 PM
> Subject: getting started /help
>
>
> > hi all,
> > i am trying to define in WSDL a simple service that accepts
> an Hashtable
> > as input parameter, but i don't know how to define it...
> > i tried to avoid it and write following WSDL
> >
> > <?xml version="1.0" ?>
> >
> > <definitions targetNamespace="http://wsifservice.addressbook/"
> > xmlns:tns="http://wsifservice.addressbook/"
> >
> xmlns:typens="http://wsiftypes.addressbook.stub.client.localjava/"
> > xmlns:xsd="http://www.w3.org/1999/XMLSchema"
> > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> >
> xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
> > xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
> > xmlns="http://schemas.xmlsoap.org/wsdl/">
> >
> > <!-- type defs -->
> >
> > <!-- message declns -->
> >
> > <message name="GetJoltServiceRequestMessage">
> > <part name="name" type="java.util.Hashtable/>
> > </message>
> >
> > <message name="GetJoltServiceResponseMessage">
> > <part name="service" type="xsd:string"/>
> > </message>
> >
> > <!-- port type declns -->
> > <portType name="JoltTool">
> > <operation name="getJoltService">
> > <input name="GetJoltServiceRequest"
> message="tns:GetJoltServiceRequestMessage"/>
> > <output name="GetJoltServiceResponse"
> message="tns:GetJoltServiceResponseMessage"/>
> > </operation>
> > </portType>
> >
> > <!-- binding declns -->
> > <binding name="JavaBinding" type="tns:JoltTool">
> > <java:binding/>
> > <format:typeMapping encoding="Java" style="Java">
> > <format:typeMap typeName="xsd:string"
> formatType="java.lang.String"
> />
> > <format:typeMap typeName="xsd:hashtable"
> formatType="java.util.Hashtable"/>
> > </format:typeMapping>
> > <operation name="getJoltService">
> > <java:operation
> > methodName="getJoltService"
> > parameterOrder="name"
> > methodType="instance"
> > returnPart="service" />
> > <input name="GetJoltServiceRequest"/>
> > <output name="GetJoltServiceResponse"/>
> > </operation>
> > </binding>
> >
> > <!-- service decln -->
> > <service name="JoltToolkService">
> > <port name="JavaPort" binding="tns:JavaBinding">
> > <java:address className="marco.JoltToolImpl"/>
> > </port>
> > </service>
> >
> > </definitions>
> >
> > but i got following exception (obviously)
> >
> > C:\wsif-2.0>java org.apache.axis.wsdl.WSDL2Java
> samples\localjava\JoltTool.wsdl
> > java.io.IOException: Type
> {http://schemas.xmlsoap.org/wsdl/}java.util.Hashtable
> > is referenced but not defined.
> > at
> org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(Symbol
> > Table.java:484)
> > at
> org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:384
> > )
> > at
> org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
> > a:371)
> > at
> org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.jav
> > a:358)
> > at
> org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:243)
> > at java.lang.Thread.run(Thread.java:479)
> >
> >
> >
> > so, if the input param is a java type, how do i specify it in WSDL?
> >
> > anyone can help?
> >
> > thanx in advance and regards
> > marco
> >
> >
> >
> >
>
>