[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