I-ASOS Prednáška 5

SoapUI

SoapUI je profesionálny nástroj na testovanie webových servisov (SOAP a REST). Nekomerčná verzia je voľne dostupná na https://www.soapui.org/downloads/soapui.html

XML-Schéma – dedičnosť

XML schema rozlišuje dva spôsoby ako definovať odvodené typy

  • extension
  • restriction

Poznámka:Objektovo orientované programovacia jazyky (ako java) zvyčajne poznajú len prvý spôsob – extension.

Možnosti, ktoré poskytuje XML-schéma pri návrhu servisu postupom contract-first ilustrujeme v nasledujúcich variantách servisu pre poisťovňu

V1. Extension

Predmety/I-ASOS/P5/poist51-uml.png

Predmety/I-ASOS/P5/p5Schema1.xsd

V2. Restriction kardinality

Predmety/I-ASOS/P5/poist52-uml.png

Predmety/I-ASOS/P5/p5Schema2.xsd

V3. Restriction hodnoty

Predmety/I-ASOS/P5/poist53-uml.png

Všimnite si, že v tomto prípade je návrh odvodený od zmluvy (tak ako štvorec je špeciálny prípad obdĺžnika)

Predmety/I-ASOS/P5/p5Schema3.xsd

Implementácia operácie navrhZmluvy

Pozrite vygenerované triedy Navrh a Zmluva v jednotlivých variantách a všimnite si rozdiely v ich štruktúre.

Implementácia operácie navrhZmluvy môže byť však rovnaká pre všetky varianty:

Asynchrónne volania SOAP operácií

Volania web-servisových operácií sú štandardne synchrónne, t.j. klient musí čakať kým server požiadavku nespracuje a nepošle odpoveď. To sa týka aj void operácií, pretože výstupnú správu posiela každá obojsmerná soap-operácia (aj ke nevracia žiadne údaje). Ak nechcem výstupnú správu vôbec generovať musíme soap-operáciu definovať ako jednosmernú. V jave slúži na to anotácia @Oneway

Keď má operácia návratovú hodnotu nemôže byť jednosmerná. Tomto prípade môžeme asynchonnú komunikáciu dosiahnuť pomocou asynchrónneho klienta. Netbeans umožňuje vygenerovať proxy objekt aj pre asynchrónnu komunikáciu nasledovne:

  • vytvoríme proxy objekt štandardným spôsobom (synchónny klient)
  • otvoríme dialog: Web Service References/ Edit Web Service Attributes..

    • záložke WSDL customization vyhľadáme operáciu a zvolíme Enable asynchronuos client

Predmety/I-ASOS/P5/async-klient1.png

  • netbeans vygeneruje 2 proxy objetky pre asynchrónnu komunikáciu, jeden založený na pollingu a druhý na callbackoch

Predmety/I-ASOS/P5/async-klient2.png

Pozn. Vložiť asynchrónne volania do kódu klientskej aplikácie možno rovnako pomocou Insert code / Call Web Service Operation…