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
|