===[ Pata uloha z Middleware: Zaklady Enterprise Java Beans 3.0 ]=== ---[ 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 technologii EJB 3.0, konkretne s pouzitim Stateful Session Beans a Entity Beans s Contained-Managed Persistence. Pozadovane znalosti: Jako priklad ulohy pouziva zadani jednoduche zmereni vzdalenosti mezi dvema uzly grafu objektu, cimz napodobuje praci s entitami propojenymi relacnimi vztahy. Pro pochopeni ulohy neni potreba zadna zvlastni znalost. Jako technologii pro implementaci klient/server architektury a persistence dat pouziva zadani standard Enterprise Java Beans ve verzi 3.0. Konkretni implementaci standardu bylo zvoleno OpenEJB 3.0. Pro implementaci ulohy je potreba znalost nasledujicich veci: - Zpusob definice vzdalene pristupneho (remote) business interface (anotovani interface pomoci anotace javax.ejb.Remote). - Zpusob implementace vzdalene pristupneho Stateful Session Beanu (anotace tridy pomoci javax.ejb.Stateful, implementace remote business interface). - Zpusob implementace Entity Beanu s persistentnimi atributy (anotace tridy pomoci javax.persistence.Entity) a specifikace mapovani na relacni databazi pomoci persistence.xml. - Sprava persistence Entity Beans pomoci EntityManager vlozeneho pomoci anotace @PersistenceContext do Stateful Session Beanu. - Zpusob definovani relaci mezi Entity Bean tridami (anotace @OneToMany, @ManyToMany apod). - Spousteni OpenEJB serveru, deployment Beans. Zpusob propojeni klienta a serveru pomoci Naming Service a RMI. Jednoduchy priklad vzdaleneho pouziti jednotlivych variant EJB Beans bude k dispozici. Popis ulohy: Zakladem zadani je jednoduche zmereni vzdalenosti mezi dvema uzly grafu. Uzly grafu jsou reprezentovany objekty tridy Node: public Node { private int id; public Collection getNeighbors (); public void addNeighbor (Node oNeighbor); } Atribut id je unikatni cislo identifikujici uzel. Metoda addNeighbor prida uzel do mnoziny sousedu volaneho uzelu a pouziva se pri generovani grafu. Metoda getNeighbors vrati mnozinu vsech sousedu volaneho objektu a pouziva se pri mereni vzdalenosti. Samotne mereni vzdalenosti nabizi rozhrani Searcher, spolu s metodami pro vytvareni a propojovani uzlu, aby klient nepracoval primo s objekty Node. Metoda addNode tedy vraci id nove vytvoreneho uzlu, metody getDistance() a connectNodes() ocekavaji id uzlu se kterymi maji pracovat. public interface Searcher { public static final int DISTANCE_INFINITE = -1; public int getDistance (int nodeFrom, int nodeTo); public int addNode(); public void connectNodes(int nodeFrom, int nodeTo); } Vase ukoly jsou nasledujici: 1. Seznamte se s poskytnutou implementaci ulohy, ktera pracuje lokalne. 2. Implementujte Searcher jako Stateful Remote Bean a Node jako Entity Bean s container-managed persistence a atributem id jako primarnim klicem. Mnozinu sousedu reprezentujte vhodnou relaci mezi objekty. Upravte klienta tak, aby uzly grafu vytvarel a vzdalenost vyhledaval pomoci Searcheru deployovaneho na EJB serveru. 3. Overte funkcnost persistence objektu Node. -[ 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: Bude upresnen na cviceni.