Gli elementi descrittivi di un wsdl sono contenuti all'interno del tag definitions.
Vediamoli applicati ad un semplice servizio Web che implementa un solo metodo , il classico hello world.
Di seguito l'estratto del codice Java di generazione del servizio:
Il WSDL generato è il seguente:
TYPES
Opzionale, definisce i tipi di dato utilizzati.
I dati possono essere tipi semplici (xsd:string etc.) oppure xsd .
La sezione types può contenere direttamente gli xsd oppure puntare ad xsd esterni.
In questo caso l'xsd è linkato:
Accedendo all'url si può vedere l'xsd del tipo dato utilizzato.
MESSAGES
Sono associati ai tipi e rappresentano per così dire i parametri di ingresso e di uscita delle operazioni dei servizi web (che sono quindi 2, vedi xsd sopra definito).
PORTTYPE
Il PortType rappresenta l'interfaccia del metodo richiamato, si noti come il nome del port type sia il name del servizio Web mentre nel nodo operation abbiamo il censimento dell'unica operazione ad esso associata, denominata helloworld.
BINDING
Questa sezione, sempre utilizzando una sintassi "javista" rappresenta l'implementazione del servizio o dei servizi definiti nella sezione PORTTYPE.
In particolare fornisce informazioni su:
La sezione service direttamente l'endpoint dove è disponibile il servizio.
Vediamoli applicati ad un semplice servizio Web che implementa un solo metodo , il classico hello world.
Di seguito l'estratto del codice Java di generazione del servizio:
@WebService(name="salutatore")
public class Ciao {
@WebMethod(operationName="helloWorld")
public String saluta(String nome){
return "Ciao "+nome;
}
}
Il WSDL generato è il seguente:
Le sezioni di cui si compone sono le seguenti:
<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.7-b01 svn-revision#${svn.Last.Changed.Rev}. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.7-b01 svn-revision#${svn.Last.Changed.Rev}. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.it/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.it/" name="CiaoService"> <types> <xsd:schema> <xsd:import namespace="http://ws.it/" schemaLocation="http://localhost:8080/WsWebServiceTest/Ciao?xsd=1"/> </xsd:schema> </types> <message name="helloWorld"> <part name="parameters" element="tns:helloWorld"/> </message> <message name="helloWorldResponse"> <part name="parameters" element="tns:helloWorldResponse"/> </message> <portType name="salutatore"> <operation name="helloWorld"> <input wsam:Action="http://ws.it/salutatore/helloWorldRequest" message="tns:helloWorld"/> <output wsam:Action="http://ws.it/salutatore/helloWorldResponse" message="tns:helloWorldResponse"/> </operation> </portType> <binding name="salutatorePortBinding" type="tns:salutatore"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="helloWorld"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="CiaoService"> <port name="salutatorePort" binding="tns:salutatorePortBinding"> <soap:address location="http://localhost:8080/WsWebServiceTest/Ciao"/> </port> </service> </definitions>
TYPES
Opzionale, definisce i tipi di dato utilizzati.
I dati possono essere tipi semplici (xsd:string etc.) oppure xsd .
La sezione types può contenere direttamente gli xsd oppure puntare ad xsd esterni.
In questo caso l'xsd è linkato:
<xsd:schema><xsd:import namespace="http://ws.it/"
schemaLocation="http://localhost:8080/WsWebServiceTest/Ciao?xsd=1"/></xsd:schema>
Accedendo all'url si può vedere l'xsd del tipo dato utilizzato.
<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.7-b01 svn-revision#${svn.Last.Changed.Rev}. --><xs:schema xmlns:tns="http://ws.it/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://ws.it/"> <xs:element name="helloWorld" type="tns:helloWorld"/> <xs:element name="helloWorldResponse" type="tns:helloWorldResponse"/> <xs:complexType name="helloWorld"> <xs:sequence> <xs:element name="arg0" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="helloWorldResponse"> <xs:sequence> <xs:element name="return" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:schema>
MESSAGES
Sono associati ai tipi e rappresentano per così dire i parametri di ingresso e di uscita delle operazioni dei servizi web (che sono quindi 2, vedi xsd sopra definito).
<message name="helloWorld"> <part name="parameters" element="tns:helloWorld"/> </message> <message name="helloWorldResponse"> <part name="parameters" element="tns:helloWorldResponse"/> </message>
PORTTYPE
Il PortType rappresenta l'interfaccia del metodo richiamato, si noti come il nome del port type sia il name del servizio Web mentre nel nodo operation abbiamo il censimento dell'unica operazione ad esso associata, denominata helloworld.
BINDING
Questa sezione, sempre utilizzando una sintassi "javista" rappresenta l'implementazione del servizio o dei servizi definiti nella sezione PORTTYPE.
In particolare fornisce informazioni su:
- Il protocollo di trasporto utilizzato, che può essere di tipo HTTP o SMTP. Dall'attributo transport si evince in questo caso che il protocollo utilizzato è HTTP;
- Lo style del servizio, che può essere di tipo RPC oppure DOCUMENT (document è il default);
- Il formato dati utilizzato nel messaggio SOAP, anche qui ci sono due possibilità, literal (come in questo caso, si tratta puro e semplice xml) oppure encoded (messaggio xml conforme a regole esterne). Si noti che il formato encoded non è WS-I compliant.
La sezione service direttamente l'endpoint dove è disponibile il servizio.
Nessun commento:
Posta un commento