I-ASOS Cvičenie 4

ASOS – 4. cvičenie

Úloha 1.

Implementujte web servis z Prednášky 3. – Príklad 2.

  • Schému a wsdl dokument vytvorte sami (použite netbeans XMLtools plugin) a porovnajte ich so súbormi z prednášky.
  • Vygenerujte z wsdl web-servis, pozrite si vygenerované servisné a dátové triedy, všimnite si v akom balíku sa nachádzajú. Mali by byť v p3.asos, ak nie sú je potrebné upraviť cieloven menné priestory v schéme a wsdl dokumente.
  • Vyvtorte klientskú aplikáciu a vygenerujte z wsdl proxy servisu. Pozrite si vygenerované dátové triedy, všimnite si v akom balíku sa nachádzajú (mali by byť v rovnako p3.asos).
  • Implementujte jeho operácie servisu a klienta pre ich otestovanie.

Úloha 2.

Implementujte web servis z Prednášky 3. – Príklad 3.

  • Rovnako ako v predchádzajúcej úlohe, schému a wsdl dokument vytvorte sami. Následne vygenerujte servis a klienta. Implementujte ich a otestujte.
  • Modifikujte schému tak aby namiesto in-line definície štruktúry elementov vytvor a vytvor-out, definovala komplexné typy pre tieto elementy.

  • Vygenerujte opäť web-servis a presvedče sa, že vygenerovaná operácia je rovnaká ako pri použití in-line definície.

Úloha 3.

Vytvorte web-servis s operáciou ponuka, ktorá vracia správu s názvami všetkých jedál v ponuke, a ak nie je v ponuke žiadne jedlo vráti chybovú správu.

Postupujte metodou contract-first, teda

  • najprv. vytvorte schému popisujúcu štruktúru správ, (vstupnú, vystupnú, chybovú)
  • potom wsdl dokument a nakoniec z nich vygenerujte servis a klienta.

Návod. Ak neviete presne ako má vyzerať schéma a wsdl dokument, vytvorte si najprv postupom code-first web servis s metódou

  • String[] ponuka () throws MojaVynimka

kde MojaVynimka je vhodná vami definovaná trieda. Prezrite si vygenerovanú schému a wsdl-ko a vytvorte podobné sami.

Úloha 4.

Postupom contract-first implementujte web servis z Prednášky 3, Príklad 4.

Úlohy z minulých rokov

Pozn. schéma pre enumeračné typy bude až na 4. prednáške

Úloha 1.

Postupom code-first implementujte web servis pre jedáleň s ponukou jedál na celý týždeň podľa špecifikácie znázornenej UML diagramom na obrázku.

  • menu-uml.png

Poznámky k implementácii

  • Pri implementácii postupujte spôsobom code-first.

  • Ponuku jedál pre den implementujte ako List
  • DenEnum implementujte ako enum s hodnotami ako je uvedene v UML

  • Ponuku jedál implementujte ako java.util.List<jedlo>

  • Po implementacii a spustení si pozrite vygenerovanú schému, všimnite si najmä xml-typy pre enum DenEnum a triedy Menu a Jedlo.

  • vytvorte si java-klienta, pozrite si vygenerovaný kód a otestujte funkcionalitu

Alternatívna implementácia

  • Ponuku jedál implementujte ako java.util.Map<String, Jedlo> (klúč je názov jedla) a pozrite si ako sa zmenila vygenerovaná schéma

Úloha 2.

Implementujte servis jedalne z predchádzajúcej úlohy postupom contract-first.

Poznámky k postupu

  • Skôr než začnete vytvárať schému a wsdl dokument, pozrite si tieto súbory ako boli vygenerované v predchádzajúcej ulohe pri riešení metódou code-first. Teraz by ste mali rovnaké súbory dokumenty vytvoriť ručne (pomocou schema a wsdl editora)
  • Všimnite si, že metóda addJedlo má dva vstupné argumenty ale vstupná správa operácie má len jednu časť (part1).
  • Pri vytváraní nového WSDL dokumentu plugimom XMLTools je možné vytvoriť priamo len jednu operáciu. Daľšie operácie je možné pridať po jeho vytvorení
    • buď editovať priamo xml – záložka Source
    • alebo použiť disajner – záložka WSDL

    V každom prípade treba doplniť postupne WSDL elementy

    • Messages
    • Port Types
    • Bindings

Klientská aplikácia

Pre otestovanie funkčnosti servisu si implementujte jednoduchú java aplikáciu (najprv vloží niekoľko jedál do menu a potom si vyžiada menu pre niektorý deň) Pozn: Všimnite si najmä ako vyzerá vygenerovaná metóda addJedlo na klientskej strane.

Úloha 3.

Implementujte web servis pre poisťovňu, ktorý poskytuje pre vytváranie novej poistnej zmluvy operáciu navrhZmluvy (navrh: Zmluva): Zmluva pričom štrukrúra zmluvy je zobrazená a UML diagrame

poist-cv4.png

Pre imlementáciu servisu zvoľte postup code-first pričom:

  • operácia navrhZmluvy na serverovej strane
    • preverí, či návrh zmluvy od klienta má zadaného majitela aj poistenca, ak niektorý údaj chýba, vyhodí metóda Exception so správou o probléme (napr. „majitel nie je zadaný!“)
    • ak sú zadaní, priradí zmluve jej číslo (zadať hocaký reťazec, napr. Z1234) a vráti ju naspäť klientovi.
  • pre otestovanie implementujte jednoduchého java klienta, ktorý
    • vytvorí Zmluvu a jednu Osobu, pričom táto osoba bude v zmluve aj majitelom aj poistencom.
    • pošle zmluvu na server a v odpovedi zo servera overí, či majiteľ a poistenec stále tá istá osoba. Viete si vysvetliť prečo nie je?

    • v prípade výnimky ju odchytí a vypíše správu.
    • Pozn. všimnite si tiež, dátový typ dátumu narodenia na strane klienta

Úloha 4.

Implementujte predchádzajúcu úlohu postupom contract-first. Nezabudnite pri tom:

  • definovať správu aj pre výnimku
  • vybrať vhodný dátový xsd-typ pre dátum narodenia.