Netbeans plugin vygeneruje len wdsl-dokument s jednou operáciou.
Ďalšie operácie treba pridať do wsdl-dokumentu manuálne, t.j. doplniť wsdl-elementy:
Definiciu xml-elementov treba doplniť do xml-schémy.
Pozor! Každé operácia musí mať vlastné elementy pre svoje správy. (Dve operacie nesmú použiť rovnaký element aj keby mali rovnakú štruktúru/typ)
Nasledujúca schéma definuje štruktúru správ pre operácie
kde trieda Jedlo má dátové členy
Double kalorie – nepovinný
Pozn. Pri vytváraní schémy je možné zadať target-namespace. Zadali sme p3.asos, vďaka čomu budú vygenerované dátové triedy umiestnené v balíku asos.p3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="p3.asos" xmlns:tns="p3.asos" elementFormDefault="qualified"> <xsd:complexType name="Jedlo"> <xsd:sequence> <xsd:element name="nazov" type="xsd:string"></xsd:element> <xsd:element name="cena" type="xsd:double"></xsd:element> <xsd:element name="kalorie" type="xsd:double" minOccurs="0" maxOccurs="1"></xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="info-in" type="xsd:string"></xsd:element> <xsd:element name="info-out" type="tns:Jedlo"></xsd:element> <xsd:element name="pridaj-in" type="tns:Jedlo"></xsd:element> </xsd:schema> |
Pozn. Všimnite si v oboch dokumentoch kde všade sa reťazec p3.asos (cieľový menný priestor schémy) nachádza.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?xml version="1.0" encoding="UTF-8"?> <definitions name="JedloWSDL" targetNamespace="http://j2ee.netbeans.org/wsdl/xmlprojekt/src/JedloWSDL" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://j2ee.netbeans.org/wsdl/xmlprojekt/src/JedloWSDL" xmlns:ns="p3.asos" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <types> <xsd:schema targetNamespace="http://j2ee.netbeans.org/wsdl/xmlprojekt/src/JedloWSDL"> <xsd:import namespace="p3.asos" schemaLocation="JedloSchema.xsd"/> </xsd:schema> </types> <message name="pridajRequest"> <part name="part1" element="ns:pridaj-in"/> </message> <message name="infoRequest"> <part name="part1" element="ns:info-in"/> </message> <message name="infoResponse"> <part name="part1" element="ns:info-out"/> </message> <portType name="JedloWSDLPortType"> <operation name="info"> <input name="input1" message="tns:infoRequest"/> <output name="output1" message="tns:infoResponse"/> </operation> <operation name="pridaj"> <input name="input1" message="tns:pridajRequest"/> </operation> </portType> <binding name="JedloWSDLBinding" type="tns:JedloWSDLPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="info"> <soap:operation/> <input name="input1"> <soap:body use="literal"/> </input> <output name="output1"> <soap:body use="literal"/> </output> </operation> <operation name="pridaj"> <soap:operation/> <input name="input1"> <soap:body use="literal"/> </input> </operation> </binding> <service name="JedloWSDLService"> <port name="JedloWSDLPort" binding="tns:JedloWSDLBinding"> <soap:address location="http://localhost:${HttpDefaultPort}/JedloWSDLService/JedloWSDLPort"/> </port> </service> </definitions> |
Nasledujúca schéma definuje štruktúru správ pre operáciu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="p3.asos" xmlns:tns="p3.asos" elementFormDefault="qualified"> <xsd:element name="vytvor"> <xsd:complexType> <xsd:sequence> <xsd:element name="nazov" type="xsd:string"></xsd:element> <xsd:element name="cena" type="xsd:double"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="vytvor-out"> <xsd:complexType> <xsd:sequence> <xsd:element name="return" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> |
Dôležité: Všimnite si, že
meno elementu vstupnej správy musí byť rovnaké ako meno operácie.
štruktura elementu návratovú správu (ak nie je operácia jednosmerná), musí byť v schéme definovaná tiež ako ako komplexný typ – sekvencia s jediným elementom, ktorý sa volá return
Inak by vygenerovaná operácia mala len jeden argument – objekt wrapujúci argumenty.
Časti wsdl-dokumentu pre operáciu vytvor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<message name="vytvorRequest"> <part name="part1" element="ns:vytvor"/> </message> <message name="vytvorResponse"> <part name="part1" element="ns:vytvor-out"/> </message> <portType name="JedloWSDL2PortType"> <operation name="vytvor"> <input name="input1" message="tns:vytvorRequest"/> <output name="output1" message="tns:vytvorResponse"/> </operation> </portType> <binding name="JedloWSDL2Binding" type="tns:JedloWSDL2PortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="vytvor"> <soap:operation/> <input name="input1"> <soap:body use="literal"/> </input> <output name="output1"> <soap:body use="literal"/> </output> </operation> </binding> |
Nech Menu ponuka() je operácia, ktorá vracia kompletnú pounku jedál na konkrétny deň. Štruktúra Menu je znázornená na UML diagrame tried:
Nasledujúca xml-schéma definuje správy pre túto operáciu.
Všimnite si tiež, ako je definovaná štruktúra vstupnej správy element ponuka, pre operáciu, ktorá nemá žiadne vstupné argumenty.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xml.netbeans.org/schema/prvaSchema" xmlns:tns="http://xml.netbeans.org/schema/prvaSchema" elementFormDefault="qualified"> <xsd:complexType name="Jedlo"> <xsd:sequence> <xsd:element name="nazov" type="xsd:string"></xsd:element> <xsd:element name="cena" type="xsd:double"></xsd:element> <xsd:element name="kalorie" type="xsd:double" minOccurs="0" maxOccurs="1"></xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Menu"> <xsd:sequence> <xsd:element name="datum" type="xsd:date"></xsd:element> <xsd:element name="jedlo" type="tns:Jedlo" maxOccurs="unbounded"></xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="ponukaResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="return" type="tns:Menu"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ponuka"> <xsd:complexType> <xsd:sequence/> </xsd:complexType> </xsd:element> </xsd:schema> |