Einleitung in eine Session-Bohne
|
Session-Bohne?
|
Eine Sessionbohne stellt einen einzelnen Klienten innerhalb des J2EE Bedieners dar. Um eine Anwendung zug�nglich zu machen die auf dem Bediener entfaltet wird, ruft der Klient die Methoden der Sessionbohne hervor. Die Sessionbohne f�hrt die Arbeit f�r seinen Klienten durch und schirmt den Klienten von der Kompliziertheit ab, indem sie Gesch�ft Aufgaben innerhalb des Bedieners durchf�hrt.
Wie der Name schon andeutet ist eine Sessionbohne einem wechselwirkenden Session �hnlich. Eine Sessionbohne wird nicht geteilt--sie kann gerade einen Klienten, in der gleichen Weise haben, der ein wechselwirkender Session gerade einen Benutzer haben kann. Wie ein wechselwirkender Session ist eine Sessionbohne nicht hartn�ckig. (Das hei�t, werden seine Daten nicht zu einer Datenbank. gespeichert), wenn der Klient beendet, scheint seine Sessionbohne zu beenden und ist nicht mehr mit dem Klienten verbunden.
|
Session-Bohne Kategorie
|
Die Sessionbohne Kategorie f�r dieses Beispiel wird CartBean genannt. Wie jede m�gliche Sessionbohne mu� die CartBean Kategorie diesen Anforderungen entsprechen:
- Sie f�hrt die SessionBean Schnittstelle ein.
- Die Kategorie wird als �ffentlichkeit definiert.
- Die Kategorie kann nicht als abstrakt oder Endrunde definiert werden.
- Sie f�hrt eine oder mehrer ejbCreate Methoden ein.
- Sie f�hrt die Gesch�ftsmethoden ein.
- Sie enth�lt einen allgemeinen Erbauer ohne Parameter.
- Sie darf nicht die beendenmethode definieren.
Das Quellenprogramm f�r die CartBean Kategorie folgt.
|
import java.util.*;
import javax.ejb.*;
public class CartBean implements SessionBean {
String customerName;
String customerId;
Vector contents;
public void ejbCreate(String person)
throws CreateException {
if (person == null) {
throw new CreateException("Null
person not allowed.");
}
else {
customerName = person;
}
customerId = "0";
contents = new Vector();
}
public void ejbCreate(String person, String id)
throws CreateException {
if (person == null) {
throw new CreateException("Null
person not allowed.");
}
else {
customerName = person;
}
IdVerifier idChecker = new IdVerifier();
if (idChecker.validate(id)) {
customerId = id;
}
else {
throw new
CreateException("Invalid id: "+ id);
}
contents = new Vector();
}
public void addBook(String title) {
contents.addElement(title);
}
public void removeBook(String title) throws BookException {
boolean result = contents.removeElement(title);
if (result == false) {
throw new BookException(title +
"not in cart.");
}
}
public Vector getContents() {
return contents;
}
public CartBean() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}
}
|
Zustand-Management-Modi
|
Es gibt zwei Arten Sessionbohnen: stateful und stateless.
|
Stateful Session-Bohnen
|
Der Zustand eines Gegenstandes besteht aus den Werten seiner Fallvariablen. In einer stateful Sessionbohne stellen die Fallvariablen den Zustand eines einzigartigen Klientbohne Sessiones dar. Weil der Klient (�Gespr�che�) auf seine Bohne einwirkt, wird dieser Zustand h�ufig den Unterhaltungszustand genannt.
Der Zustand wird w�hrend der Dauer des Klientbohne Sessiones behalten. Wenn der Klient die Bohne entfernt oder beendet, beendet der Session und der Zustand verschwindet. Diese vor�bergehende Natur des Zustandes ist nicht ein Problem jedoch weil, wenn das Gespr�ch zwischen dem Klienten und den Bohne Enden dort keine Notwendigkeit ist, den Zustand zu behalten.
|
Stateless Session-Bohnen
|
Eine stateless Sessionbohne beh�lt nicht einen Unterhaltungszustand f�r einen bestimmten Klienten bei. Wenn ein Klient die Methode einer stateless Bohne hervorruft, k�nnen die Fallvariablen der Bohne einen Zustand, aber nur w�hrend der Dauer der Anforderung enthalten. Wenn die Methode beendet wird, wird der Zustand nicht mehr behalten. Ausgenommen w�hrend Methode Anforderung sind alle F�lle einer stateless Bohne �quivalent und lassen den EJB Beh�lter einen Fall jedem m�glichem Klienten zuweisen.
Weil stateless Sessionbohnen mehrere Klienten st�tzen k�nnen, k�nnen sie besseres scalability f�r Anwendungen anbieten, die viele Klienten erfordern. Gew�hnlich erfordert eine Anwendung wenige stateless Sessionbohnen als stateful Sessionbohnen, die gleiche Zahl Klienten zu st�tzen.
Manchmal kann der EJB Beh�lter eine stateful Sessionbohne zum Fremdspeicher schreiben. Jedoch werden stateless Sessionbohnen nie zum Fremdspeicher geschrieben. Folglich k�nnen stateless Bohnen bessere Leistung als stateful Bohnen anbieten.
|
Wann man Session-Bohnen benutzt
|
Im allgemeinen solltest du eine Sessionbohne benutzen, wenn die folgenden Umst�nde halten:
Stateful Sessionbohnen sind angebracht, wenn irgendwelche der folgenden Bedingungen zutreffend sind:
Der Zustand der Bohne stellt die Interaktion zwischen der Bohne und einem spezifischen Klienten dar. Die Bohne mu� Informationen �ber den Klienten �ber Methode Anforderungen halten.
Die Bohne vermittelt zwischen dem Klienten und den anderen Bestandteilen der Anwendung und stellt eine vereinfachte Ansicht dem Klienten dar.
Hinter den Szenen handhabt die Bohne den Arbeit Flu� einiger Unternehmenbohnen.
Um Leistung zu verbessern, konntest du eine stateless Sessionbohne beschlie�en wenn sie irgendwelche Merkmale hat:
- Der Zustand der Bohne hat keine Daten f�r einen spezifischen Klienten.
In einer einzelnen Methode Anforderung f�hrt die Bohne eine generische Aufgabe f�r alle Klienten durch. Z.B. konntest du eine stateless Sessionbohne benutzen, um eine E-mail zu senden, die einen on-line-Auftrag best�tigt.
Die Bohne holt von einer Datenbank einen Satz Read-only-Daten, die durch Klienten h�ufig benutzt ist. Solch eine Bohne z.B. k�nnte die Tabelle Reihen zur�ckholen, die die Produkte darstellen, die auf Verkauf dieser Monat sind.
|
|
|
Keywords:
EJB Session,ejb session bean,ejb session beans,j2ee session,tateless session bean,stateful session bean,weblogic session,jboss session,stateless session beans,stateful session beans,session ejb,weblogic session timeout,jboss session timeout,stateless session ejb,j2ee session variables,weblogic session replication,stateful session ejb,weblogic 8.1 session,jboss session bean,ejb entity beans
|