JBoss Seam

‘Kapocs'. Lenne a válasz, ha jellemezni kéne a Seam keretrendszert egy szóban. Kapocs a Java EE lényeges részét képező JSF, EJB3 és JPA technológiák között integrálva egy a komplex üzleti folyamatok modellezését és implementálását biztosító BPM rendszert, a gyors és kényelmes felhasználói felületek létrehozását elősegítő AJAX technologiát és még sorolhatnám.

A Seam biztosít egy egységes komponens modellt, függetlenül az alkalmazás rétegtől. Nem köti meg a kezünket, nem kötelező a megszokott megjelenítési - üzleti - perzisztencia réteg felosztás alkalmazása, a döntés a mi kezünkben van.

Seam komponens lehet bármilyen EJB3 bean de akár egy egyszerű POJO is. Mindkét esetben megkapjuk a Seam által nyújtott előnyöket.

Deklaratív állapot menedzsment

A Seam kibővíti az EJB megjelenése óta ismert deklaratív tranzakció és security menedzsmentet az állapot menedzsmenttel, ami nem jelent mást, mint hogy egyszerűen definiálhatjuk, hogy egyes komponenseink milyen kontextusban éljenek. A komponensek életciklusának kezelése automatikus. Az újonnan bevezetett Conversation Contexttel egy sor régóta létező problémát sikerült orvosolni úgy mint a több ablakban / tabban összeakadó munkafolyamatok, LazyInitializationExceptionok a megjelenítési rétegben,  refresh / duplikált form submit, üzenetek propagálása post-redirect műveleten keresztül. Az ugyancsak új Business Process Context a komplex, több szereplős üzleti folyamatok implementálását egyszerűsíti.

Bijekció (Bijection)

Az EJB3 és JSF technológiák által is nyújtott Dependency Injection továbbgondolása, mely lehetővé teszi a környezetfüggő (context aware) komponens injekciót (injection) továbbá a komponensek bejuttatását az általunk kiválasztott kontextusba (outjection).

Munkafolyamat menedzsment

A Seam által bevezetett párbeszéd kontextussal (conversation context) lehetőségünk van az üzletileg egymástól független munkafolyamatok elszigetelésére. A futó párbeszédek között a felhasználó tetszőlegesen válthat akár egy böngésző fülön belül is, továbbá több ablakos / fülös használat mellett az elkülönített munkafolyamatok nem akadnak össze.

Integrációs tesztek támogatása

Mivel a Seam komponensek lényegében egyszerű Java osztályok, ezek unit tesztje egyszerű és adott. Azonban egy alkalmazás egészének tesztelésére a unit tesztek nem elégségesek, integrációs tesztekre van szükség. A Seam által nyújtott eszközökkel egyszerűen írhatóak olyan JUnit vagy TestNG tesztesetek, melyekkel végig lehet tesztelni a folyamatok egészét a felhasználói felülettől az adatbázisig, felhasználói interakció nélkül, automatizálva.

Nem csak HTML-ből áll a világ

A JSF egyszerű bővíthetőségének és sokoldalúságának köszönhetően a már ismert és jól bevált technológiával - és annak összes előnyével - HTML mellett generálhatunk PDF, RTF, Excel és CVS dokumentumokat de akár csatolmányokkal ellátott e-maileket is küldhetünk.

Jogosultság kezelés

A Seam biztosít egy moduláris, könnyen bővíthető autentikációs és authorizációs rendszert. Az autentikáció JAAS alapú, a két beépített felhasználó és szerepkör menedzsment modul LDAP és RDBMS alapú, a beépített authorizációs modulok támogatják a szerepkör és szabály (JBoss Drools) alapú megoldásokat. A fejlesztőt annotációk és EL (Expression Language) függvények segítik a gyors és hibamentes fejlesztésben.

Iránymutatás a jelen és a jövő standardjainak

A hasonlóság a mostanában megjelent standardok (pl. JSF2, CDI - JSR-299) és a Seam funkcionalitásai között nem véletlen. A Seam mögött álló számos fejlesztő és cég közül nem egy részt vett / vesz - közvetve vagy közvetlenül - ezeknek a standardoknak a kidolgozásában. A CDI (Contexts and Dependency Injection) referencia implementációja, a Weld a Seam következő verziójának, a Seam3-nak a magja.

Források:

http://seamframework.org
http://docs.jboss.com/seam/latest/reference