Newsgroup: it.comp.java
Titolo: Re: oggetto SOAP partendo da struttura WSDL

 tramite WSDL:
Se usi Axis c'è WSDL2Java:
http://ws.apache.org/axis/java/user-guide.html#WSDL2JavaBuildingStubsSkeletonsAndDataTypesFromWSDL
Gaetano

Buongiorno a tutti voi...
Vorrei costruire un oggetto SOAP, partendo dallo schema ottenuto
tramite WSDL:
cerco di spiegarmi meglio...
Ad un certo indirizzo URI posso visualizzare la struttura che deve
avere un messaggio per essere accettato dal Server. Qualcosa del
genere:
<?xml version="1.0" encoding="UTF-8" ?> 
<wsdl:definitions name="name1" 
   targetNamespace="
http://www.qualchecosa
"
   xmlns:tns="
http://www.qualchecosa
"
   xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/
" 
   xmlns:http="
http://schemas.xmlsoap.org/wsdl/http/
" 
   xmlns:mime="
http://schemas.xmlsoap.org/wsdl/mime/
" 
   xmlns:xsd="
http://www.w3.org/2001/XMLSchema
" 
   <wsdl:types>
      <xsd:schema xmlns:xsd="
http://www.w3.org/2001/XMLSchema
" 
         targetNamespace="
http://www.qulcosa
">
         <xsd:import namespace="
http://schemas.namespace
" /> 
         <xsd:complexType name="complexType">
         <xsd:sequence>
            <xsd:element name="ele1" type="xsd:string" />
               <xsd:sottoelement name="sottoele1" type="xsd:string" />
            </xsd:element>
            <xsd:element name="ele2" type="xsd:int" /> 
            <xsd:element name="ele3" type="xsd:string" /> 
            ...
Vorrei poter creare in java un oggetto SOAP (tramite i classici
comandi addChildElement, addTextElement ecc.). Naturalmente la
struttura presentata all'URI potrebbe cambiare un giorno, a quel punto
dovrei riscrivere il mio codice per popolare gli elementi in base alla
nuova struttura.
Invece vorrei che il mio programma creasse l'oggetto SOAP solo
leggendo la struttura presentata all'URI assegnato.
E' possibile realizzare qualcosa del genere??
Grazie a chiunque rispondera'
Mjk

...

Prima di tutto volevo ringraziarti per la disponibilità...
inoltre ne approfitto per chiederti ancora una cortesia...
non avresti un po' di codice (giusto 2 righe) come esempio per capire
come usare questa classe?
Grazie ancora
Mjk

 come usare questa classe?
Devi seguire quello che viene descritto nella pagina indicata sopra.
In realtà è abbastanza semplice. Dopo aver scaricato il JAR, impostato
il CLASSPATH ecc. ecc. come di dovere, basta lanciare il comando:
java org.apache.axis.wsdl.WSDL2Java <url>
Ad esempio seguendo l'esempio online di un "address book":
java org.apache.axis.wsdl.WSDL2Java AddressBook.wsdl
Ma di solito al posto dell'URL locale metterai quella del web server,
del tipo
java org.apache.axis.wsdl.WSDL2Java 
http://www.miosito.it/path/miofile.wsdl
Verranno generate tutte le classi necessarie per accedere al web
service e poi le utilizzerai nel seguente modo (sempre preso dalla
documentazione online):
public class Tester {
   public static void main(String [] args) throws Exception {
     // Make a service
     AddressBookService service = new AddressBookServiceLocator();
     // Now use the service to get a stub which implements the SDI.
     AddressBook port = service.getAddressBook();
     // Make the actual call
     Address address = new Address(...);
     port.addEntry("Russell Butek", address);
   }
}
Gaetano