Szoftver Tervezési Dokumentáció Nguyen Thai Binh April 2010
1. fejezet Feladat Szimulációs feladat. Célja, hogy reprezentáljunk egy több komponensből álló alkalmazást, amely a megadott témakörnek megfelel, ami nem más, mint az ” Erdész ”. A feladat megoldásához, Java Enterprise (JEE) technológiát választottam. Mivel a feladat több komponensből áll, és a kommunikáció módja elengedhetetlen feltétel, ezért, a Java Messaging Services API-t (JMS) választottam, amivel megvalósítom a komponensek közti kommunikációt.
1
2. fejezet JMS 2.1.
Bevezetés
Szoftver komponensek közötti kommunikáció, amely p2p.
2.1.1.
Elvégezhető műveletek:
JMS API-val a következő műveletek végezhetőek el egy üzenettel: • létrehozás (create) • elküldés (send) • fogadás (receive) • olvasás (read)
2.1.2.
Tulajdonságai:
Aszinkron A fogadó félnek nem kell kérést invokálni, ahhoz, hogy üzenetet tudjon fogadni. Megbizható JMS API garantálja, hogy egy üzenet csak egyszer legyen fogadva.
2
3. fejezet Session Bean 3.1.
Session Bean Bevezetés
Szoftver komponens és kliensek közötti session alapú kommunikáicó, amely úgy van kialakítva, hogy egy kliens - egy session - egy thread épül fel. Az egész Bean alapú model, támogatja a több felhasználói hozzáférést, amely egyben támogatja az objektumok szerializálizációját.
3.2.
Típusai
Statelfull Session Bean Állapottal rendelkező Session Bean, amely támogatja az osztály állapotának eltárolását. Különböző állapotai vannak, amely egyértelműen meghatározza egy klienssel való kapcsolatát. Stateless Session Bean Állapot nélküli Session Bean, amely kérés - kiszolgálás állapotú. Ez azt jelenti, hogy nem tárolja el, a klienssel kapcsolatos információkat. Addig él az objektum, amíg megvan a kapcsolat a klienssel, ezért az Application Server felel. Singleton Session Bean Ez egy statikus objektum, amely csak egyszer jön létre, mint a nevéből is látszik a Singleton tervmintát implementálja. Sajnos ez nem rég lett beletéve az EJB szabványba (EJB 3.1).
3
4. fejezet Entity Bean - EJB réteg 4.1.
EJB Bevezetés
Ahhoz, hogy kapcsolatot teremtsünk, és kommunikálni tudjunk az adatbázis réteggel egyszerűen és hatékonyan elengedhetetlen az EJB réteg használata. Különböző implementációk vannak erre, amely vagy felhasználja a Sun által implementált szabványt, vagy saját maga írta meg a saját kommunikációs rétegét, mint például a JBOSS vagy Apache. A legfontosabb tulajdonság, ennek a rétegnek, hogy konkurens hozzáférést adjanak egy adat rekordhoz. Ez biztosítva van a persistence manager által.
4.2.
Működése
Hogyan is működik? Egyszerű POJO-kat (Plain Old Java Object) - egyszerű java objektumok írunk, amelyeket feltüzdelünk különböző annotációkkal. Ezen annotációk definiálják, hogy miként és hogyan kell használni, mely adatbázis objektumot képez le ez az osztály. Például: @EJB Megadja, hogy ez egy EJB típusú objektum. @ID Megadja, hogy a mező egy elsődleges kulcsot definiál a tábla struktúrában. @ManyToMany Megadja, hogy milyen kapcsolatban van más adattáblákkal. @GeneratedValue Megadja, hogy a mező automatikusan van kigenerálva. @Query Megadja, hogy ez egy előre definiált EQL utasítás.
4
5. fejezet JSF - Web réteg 5.1.
Bevezetés
Ez a réteg felel az adatok, informáicó megjelenítésért. Kliens oldalon fut, általában böngészőben. Itt az szokta okozni a legnagyobb problémát, hogy különböző böngészőkm máshogyan dolgozzák fel a megjelenítést. A rétegen belül több technológia van felsorakoztatva, felhasználói. Technológiák: Ajax Aszinkron módban kommunikál a szerverrel. A HTML fa egy részét küldi csak vissza a kliens oldalra. 3rd party API Library Ezen könyvtárak közé tartozik a Google API, Yahoo, NavTeQ, stb... Portal Portal rendszerek, amely egy valóban komponens alapú fejlesztést támogat és szolgáltat. Pl.: JBoss Portal System.
5.2.
Működés
JSF - Java Server Faces. Ez egy tag library, amely különböző megjelenítési tag-ket szolgáltat. Ezeket felhasználva egyszerűbben tudunk html oldalakat szerkeszteni, szabványokat nem megsértve.
5
6. fejezet Statikus Model 6.1.
Adatbázis Oldali
6
6.2.
Szerver Oldali
7
6.3.
Kliens Oldali
8
7. fejezet Dinamikus Model 7.1.
Együttműködés
Kliens Kommunikáció - JMS Célja, hogy megmutassam, hogyan tudunk információt küldeni a szerver felé JMS Komponensen keresztül. Forrester Kommunikáció - Session Bean Célja, hogy megmutassam, hogyan tudunk informáiciót kinyerni, és vissza tölteni a szerver felé Stateless Session Bean keresztül. Push - AJAX technológia - Célja, hogy megmutassam a Push technológia működését, ami nem más mint egy pull mechanizmus, szkript vezérlésével.
9
Diagrammok:
10
7.2.
Állapotok
Egy hagyományos állapot diagram szenárió, amely kliens-szerver kapcsolatot ábrázolja. Hogyan adunk egy új rekordot az adatbázishoz.
11
12
8. fejezet Szoftver csomagok 8.1.
Application Server
Application szervernek a JBoss AS 4.2.3 használtam, mivel ez az egyik legmegbizhatóbb. Elindítása Windows környezet alatt a startup.bat, Unix alapú rendszerek alatt startup.sh script-ekkel lehet elindítani.
8.2.
Adatbázis szerver
Adatbázis szervernek Postgresql 8.4 adatbázis szervert használtam, amely gyors és GPL liszenszel lehet használni. Ahhoz, hogy az application szerver együtt tudjon működni az adatbázissal, felkell telepítenünk postgresql jdbc driver-t.
8.3.
Megjelenítésért felelős csomagok
richfaces Richfaces egy kibővített verziója a JSF-nek, amely több userinterface komponenseket szolgáltat. exadel - Fiji Grafikonok megjelenítésért felelős program könyvtár.
13
9. fejezet Felhasználói dokumentáció 9.1.
Szerver elindítása
Ahhoz, hogy használhassuk az alkalmazást, elkell indítani a JBoss alkalmazás szervert. Ezek után, felkell telepíteni a következőket: 1. Simulator EJB projekt. 2. MessageReceiver Message Driven Bean projekt. 3. WebClientAdmin Web Projekt. 4. WebClientViewer Web Projekt. Ezt manuálisan is megtehető, azaz átmásoljuk az EJB .jar file-okat, valamint a web projekteket .war file-okat a jboss_home-ba. cp cp cp cp
Simulator.jar $jboss_home/server/default/deploy \ MessageReceiver.jar $jboss_home/server/default/deploy \ WebClientAdmin.war $jboss_home/server/default/deploy \ WebClientViewer.war $jboss_home/server/default/deploy
Bekell még másolni postgresql jdbc driver-t a jboss_home-ba. cp postgresql-x-x.jdbc4.jar $jboss_home/server/default/lib Ezek után már elindíthatjuk a szervert a run.sh script-el.
14
9.2.
Adat felvitel
Ebben a fejezetben bemutatom az adat felvitel réteg használatát. Ehhez, nem kell semmi más mint egy böngésző a következő url-t: http://localhost:8080/WebClientAdmin Itt tudunk felvinni újjabb fatípusokat a kiválasztott erdőhöz. Ezenkívül hozzáadhatunk rövid megjegyzéseket.
9.3.
Adat megjelenítés
Itt láthatjuk a felrögzített fatípusokat, megjegyzésekkel együtt a következő url címen: http://localhost:8080/WebClientViewer
9.4.
Elérhetőség
Minden forrás és dokumentáció elérhető a következő code.google.com oldalon: http://code.google.com/p/progelmelet2/ Letölthető és felhasználható.
15
10. fejezet Függelék JEE http://java.sun.com/javaee/technologies/javaee5.jsp JMS http://java.sun.com/products/jms/ JBoss http://www.jboss.org/jbossas Postgresql http://www.postgresql.org/ Richfaces http://www.jboss.org/richfaces Exadel Fiji http://www.exadel.com/web/portal/fiji
16