Mire jó a JBoss Seam keretrendszer?
A JBoss Seam egy pehelysúlyú keretrendszer (lightweight framework), mely a Java EE 5.0 hiányosságait pótolja. Azáltal, hogy a programozó és a Java EE keretrendszerek között helyezkedik el, egy konzisztens és könnyen érthető programozási modellt nyújt. Továbbá egyszerűsíti az állapot-megőrző (stateful) és üzleti folyamat-vezérelt (business process-driven) alkalmazások készítését.
Tehát egy olyan keretrendszer, mely a Java EE szolgáltatásait hivatott kiegészíteni. A kiegészítés legfontosabb eleme (szerintem) a keretnredszerek integrációja. Annak ellenére, hogy Enterprise környezetbe szánták nyugodtan lehet használni Tomcaten is EJB komponensek nélkül is.
Java EE keretrendszerek integrációja:
A Java EE 5.0 alap rendszerei az EJB (Enterprise JavaBeans) 3.0 és a JSF (JavaServer Faces) 1.2. Az EJB 3.0 egy könnyűsúlyú keretrendszer, mely lehetővé teszi az üzleti folyamatok és az adatbázis perzisztencia kezelését, és az egyszerű Java objektumok (Plain Old Java Objects) elvén alapul. A JSF egy Modell-Nézet-Vezérlő (MVC, Model-View-Controller) komponens keretrendszer webes alkalmazásokhoz. A legtöbb Java webes alkalmazás mindkét technológiát használja az üzleti logika és a felhasználói felület megvalósításához. Habár az EJB3 és a JSF egymás kiegészítői, mégis mindkettőt önálló keretrendszerként, saját filozófiával fejlesztették. Példa erre, hogy az EJB objektumok konfigurációja annotáció, míg a JSF oldalaké XML alapú. Különállóságukat az is jelzi, hogy a keretrendszer szintjén nem észlelik egymást. Az EJB3 és a JSF együttműködéséhez szükség van mesterséges objektumokra, melyek a üzleti komponenseket a weblapokhoz kötik. A Seam egyik fő feladata ezen technológiák "összeragasztása". Néhány egyszerű annotáció segítségével a Seamben lévő EJB3 komponensek közvetlenül elérhetik a JSF web formokat, így válaszolhatnak a felhasználói interakciókra. A következő példa az mutatja be, hogy egy egyszerű @Name annotáció segítségével hogyan lehet összekötni a nézet és kontroller réteget:
Person osztály, a modell réteg:
public class Person {
private String name;
public void setName(String name) { this.name = name; }
public String getName() { return name; }
}
Manager osztály, a kontroller réteg:
@Name("manager")
public class Manager implements Serializable {
private Person person;
private List persons;
... ...
public void setPerson(Person person) { this.person = person; }
public Person getPerson() { return person; }
public void addPerson() {
persons.add(person);
person = new Person();
}
}
Manager.xhtml, a nézet réteg:
<h:form id="frmPersons">
<h:outputText value="Nev: " />
<h:inputText value="#{manager.person.name}" />
<a:commandButton action="#{manager.addPerson}"
value="Hozzaad" reRender="frmPersons" />
<rich:dataTable value="#{manager.persons}" var="p">
<h:column>
<h:outputText value="#{p.name}" />
</h:column>
</rich:dataTable>
</h:form>
A @Name annotáció segítségével tehát nem kell "összedrótozni" a beaneket a html oldalakkal az XML leírókban.
- b0b0 blogja
- A hozzászóláshoz be kell jelentkezni
- 1276 megtekintés
Hozzászólások
EE6-ban már van szabvány szinten is. Pontosabban van ApplicationScope, SessionScope stb. annotáció, aminek ugyanígy paraméterben tudod megadni a logkai nevét.
- A hozzászóláshoz be kell jelentkezni
Igen, ha jól tudom (a weboldal szerint), a Seam adja a szabvány alapját.
- A hozzászóláshoz be kell jelentkezni
Ezt jó tudni, köszi a leírást!
Egyébként fentebb nem jól írtam. Kettő annotáció kell:
@ManagedBean(name="..")
@SessionScoped/@RequestScoped/...
public class ....
- A hozzászóláshoz be kell jelentkezni
Igen, ez a két annotáció kell seamben is. Illetve hasonlók @Name és @Scope. A scope-okról is szeretnék írni egy rövid bejegyzést.
- A hozzászóláshoz be kell jelentkezni
azt tudjátok, hogy a J2EE P4 portnak miért ez a neve?
- A hozzászóláshoz be kell jelentkezni
Hadd kérdezzek egyet:
openjdk - SEAM milyen (v)iszonyban vannak egymással?
Konkrétabban: 10.04 LTS + eclipse (repóból) + openjdk kombó jó-e ezzel ismerkedni, vagy ragaszkodjak a sun-jre6 -hoz?
- A hozzászóláshoz be kell jelentkezni
Az én fejlesztöi környezetem:
- 10.04
- JBoss Developer Studio (Eclipse + Seam plugin)
- OpenJDK
- JBoss 5.X AS
Tökéletesen müködik openjdk-val is.
- A hozzászóláshoz be kell jelentkezni