[MWy] Treti cviceni pondeli 14. 4. 14:00 SU2

Martin Decky decky at dsrg.mff.cuni.cz
Fri Apr 11 22:15:36 CEST 2008


Hezky vecer,

treti cviceni z predmetu Middleware se uskutecni v terminu uvedenem
v predmetu tohoto emailu. Tema bude JMS.

Opet durazne doporucujeme, abyste si zopakovali znalosti o JMS
z prednasky, predem se dukladne seznamili s ukazkami, ktere jsme 
pripravili, vyzkouseli si praci ve Vase oblibenem vyvojovem prostredi a 
seznamili se predem se zadanim.

Konkretni implementace JMS, kterou budeme pouzivat, je ActiveMQ 5.0.0. 
Nize naleznete odkaz pro stazeni rozumne nakonfigurovane distribuce 
(komunikuje pouze pres TCP, neposila broadcasty a nevyzaduje JNDI).

http://dsrg.mff.cuni.cz/~ceres/sch/mwy/download/ActiveMQ-5.0.0.tar.gz


Pro prakticke zkouseni prace s ActiveMQ si muzete stahnout dve ukazky. 
Jedna je skutecne velmi jednoducha a slouzi spise k rozchozeni vseho 
potrebneho, druha je jiz ponekud rozsahlejsi a slouzi k prakticke 
demonstraci pouziti. Obe ukazky predpokladaji, ze ActiveMQ z vyse 
uvedeneho baliku je rozbalena do adresare ~/ActiveMQ, ale jednoduchou 
zmenou promenne $ACTIVEMQ_HOME v pomocnych skriptech docilite behu i 
odjinud.

http://dsrg.mff.cuni.cz/~ceres/sch/mwy/download/as3.zip


A konecne na konci emailu naleznete predbeznou podobu zadani ulohy, 
kterou budete na cviceni vypracovavat. Pripadne zmeny v zadani budou
v rozumnych mezich. Veskera pravidla pro vypracovani zustavaji standardni.


M.D.


===[ Treti uloha z Middleware: Zaklady JMS ]===

---[ Zakladni zadani ]---

      Za uspesne dokonceni zadani behem cviceni jsou 2 body.
      Studenti, kterym se nepodari ulohu dokoncit behem cviceni,
      mohou za jeji uspesne dokonceni jeste tentyz den dostat 1 bod.

Cilem zadani je ziskat zakladni zkusenost s Java Message Service a 
obecneji s middleware prostredky zalozenymi na zasilani zprav.

Pozadovane znalosti:

   Jako priklad ulohy na zasilani zprav popisuje zadani komunikacni
   protokol implementujici jednoduchy obchodni system. Pro pochopeni
   ulohy neni potreba zadna zvlastni znalost.

   Jako technologie posilani zprav se pouziva specifikace JMS (Java
   Message Services) v implementaci ActiveMQ 5.0.0. Pro implementaci
   ulohy je potreba znalost nasledujicich veci:

    - Zakladni metody, ktere poskytuje specifikace JMS, a jejich pouziti
      (vytvareni objektu Connection, Session, Queue, Topic atd.).

    - Zpusob implementace producenta a konzumenta zprav (objekty
      MessageProducer, MessageConsumer).

    - Zpusob vytvareni a dekodovani zprav ruzneho druhu (TextMessage,
      ObjectMessage, MapMessage atd.), znalost kriterii, kdy je ktery
      typ zpravy nejvhodnejsi.

    - Spusteni infrastruktury JMS (service provideru).

   Jednoduchy priklad pouziti JMS bude k dispozici.

Popis ulohy:

   Implementujte aplikaci pro on-line obchodovani. Kazda spustena
   instance aplikace bude slouzit ke komunikaci s libovolnou jinou
   aplikaci a take ke komunikaci s Bankou.

   Vase aplikace musi implementovat tyto funkce:

   1. Po spusteni z textoveho souboru precist jednoznacne popisy zbozi,
      ktere prodavajici nabizi, spolecne s cenou kazdeho zbozi. Tento
      seznam bude zaslan jako zprava k tematu "Offers".

      Dale zaslat Bance zpravu s zadosti o vytvoreni uctu. Na tuto zadost
      odpovi Banka zpravou s cislem nove vytvoreneho uctu.

      Vstupni soubor bude mit tento format:

jednoznacny popis zbozi A
cena zbozi A (celociselna)
jednoznacny popis zbozi B
cena zbozi B (celociselna)
...
...

   2. Zobrazovat uzivateli (libovolnou trivialni formou) seznam zbozi
      s cenami, ktere nabizeji ostatni bezici instance. Tento seznam by
      mel byt aktualizovan, kdykoliv dorazi nova zprava, pricemz drive
      nabizene zbozi od dane instance by melo byt ze seznamu odstraneno.

   3. Pri ukonceni behu instance poslat prazdnou zpravu s nabizenym
      zbozim.

   4. Umoznit uzivateli vybrat (opet jakkoliv trivialne) cizi zbozi pro
      koupi. Koupe je realizovana tak, ze se vlastnikovi zbozi zasle
      zprava obsahujici popis zbozi a cislo uctu kupujiciho. Prodavajici
      pote zasle kupujicimu zpravu obsahujici cislo jeho uctu, pripadne
      odmitnuti prodeje.

      Kupujici zasle Bance zpravu o prevodu prislusne castky ze sveho
      uctu na ucet prodavajiciho. Banka pote zasle prodavajicimu zpravu o
      probehle platbe z uctu kupujiciho. Na zaklade teto zpravy odstrani
      prodavajici zbozi ze sveho seznamu. Kupujici nakoupene zbozi sam
      nenabizi k prodeji.
	
   5. Je-li kdykoliv seznam zbozi k prodeji dane instance prazdny,
      instance se ukonci.

   Komunikace je oproti realnym podminkam velmi zjednodusena (napr. Banka
   pri platbach zcela ignoruje zustatky na uctech), presto by se
   implementace mela chovat v ramci moznosti rozumne -- odmitnout prodej
   polozky, o kterou jiz projevil zajem jiny kupujici apod.

   Implementace Banky bude poskytnuta.

---[ Rozsirene zadani ]---

      Studenti, kterym se nepodari ulohu dokoncit behem cviceni,
      mohou za uspesne dokonceni jeji rozsirene verze do peti
      dnu dostat 2 body.

Popis ulohy:

   Zamyslete se nad slabinami vyse uvedeneho komunikacniho protokolu a
   nabizeni zbozi. Rozsirte, zdokumentujte a naimplementujte robustnejsi
   variantu protokolu, ktera bude predevsim implementovat:

   1. Existenci persistentnich uctu v Bance (definice uctu s pocatecnimi
      zustatky bude mozne nacist pri spusteni Banky z textoveho souboru),
      vedeni realnych zustatku na uctech, podporu dotazu na zustatek na
      uctu. (Muzete pouzit existujici implementaci Banky a rozsirit ji.)

   2. Transakcne bezpecny nakup zbozi s prihlednutim k dostatecnemu
      zustatku na uctu kupujiciho.




More information about the NSWI080 mailing list