I-ASOS Prednáška 2

ASOS – 2. prednáška

1. Čiastočná implementácia web servisu jedálne

Implementácia vychádza z predpokladu, že jedlá v ponuke budú jednoznačne identifikované svojím názvom. Deklarácie metód poskytujúcich funkcionalitu servisu by mohli vyzerať napríklad takto:

Trieda Jedlo

 

Trieda JedalenService

 

2. 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…

3. EJB – úvod

Implementácia jednoduchého web servisu pre prácu s databázovou tabuľkou s využitím EJB

Vytvorenie web servisu – Postup:

Vytvorenie web aplikácie a entitnej triedy pre existujúcu databázovú tabuľku

  • nb: new WebApplication projekt (pre glassfish) …

  • new/other/Persistance/Entity Classes from Database… vybrať datasource tabuľku (napr. JEDLO) a zadať package name (entities)

Vytvorenie EJB session bean poskytujúceho entity manager a operácie pre prácu s entitnou triedou

  • new/other/Persistance/Session bean for Entity Classes… vybrať entitnú triedu (Jedlo), a zadať package (ejb)

Vytvorenie web servisu poskytujúceho prístup k operáciám EJB session beanu

  • new/other/Web Services/Web Service …
    • zadať package (ws)
    • zvoliť create Web Service from existing Session Bean
    • Browse… a vybrať bean vytvorený v predchádajucom kroku (JedloFacade).

  • pridať do implementácie web-servisu daľšie operácie, resp. modifikovať existujúce podľa špecifikácie

Overenie fukčnosti servisu pomocou

  • netbeans clienta
  • vlastného java-klienta

4. Návrh a implementacia servisu z WSDL

Pri vývoji SOA aplikácií je možné postupovať dvoma spôsobmi:

  • Code-first najprv vytvoríme dátové triedy a metódy servisu. Následne z nich vygenerujeme špecifikáciu rozhrania servisu (WDSL a schéma)

    • takto sme postupovali doteraz

  • Contract-first najprv definujeme špecifikáciu rozhrania servisu (WSDL a schéma). Následne z nej vygenerujeme dátové triedy a kostru servisu s metódami, ktoré treba implementovať