Mit dieser Task können Sie die Implementierungsattribute der ActivitySessions für
eine Enterprise-Bean konfigurieren, damit die Bean in einem ActivitySession-Kontext
verwendet werden kann und ActivitySession-gestützte Operationen unterstützt.
Vorbereitende Schritte
In der Beschreibung dieser Task wird davon ausgegangen, dass Sie eine EAR-Datei (Enterprise Archive) haben, die eine in
WebSphere Application Server implementierbare Anwendungs-Enterprise-Bean enthält.
Weitere Einzelheiten finden Sie im Artikel
zum Assemblieren von Anwendungen.
Informationen zu diesem Vorgang
Sie konfigurieren die Implementierungsattribute einer Anwendung über ein Assembliertool.
In diesem Artikel wird die Verwendung von Rational Application Developer für die Konfiguration der
ActivitySession-Implementierungsattribute beschrieben. Diese Attribute gelten zusätzlich zu anderen
Implementierungsattributen, wie z. B.
"Laden beit", das angibt, wann die Bean ihren Status aus der Datenbank lädt. Ausführlichere Informationen zu den Feldern
im Assembliertool und zugehörige Taskhilfe finden Sie in den Informationen zu Rational Application
Developer.
Führen Sie die folgenden Schritte
aus, um die Implementierungsattribute der ActivitySession für eine Webanwendung zu konfigurieren:
Vorgehensweise
- Starten Sie das Assembliertool. Weitere Informationen finden Sie in der Dokumentation zu
Rational Application Developer.
- Erstellen oder editieren Sie die EAR-Datei der Anwendung.
Anmerkung: Konfigurieren Sie den Zielserver als WebSphere Application Server Version 7.0.
Wenn Sie beispielsweise die Attribute einer vorhandenen Anwendung öffnen möchten, verwenden Sie den Importassistenten,
um die EAR-Datei in das Assembliertool zu importieren. Starten Sie den Importassistenten wie folgt:
- Klicken Sie auf .
- Klicken Sie auf Weiter. Wählen Sie dann die EAR-Datei aus.
- Wählen Sie im Feld "Zielserver" den Eintrag WebSphere Application
Server v7.0 aus.
- Klicken Sie auf Fertigstellen.
- Klicken Sie in der Sicht "Projektexplorer" der Java™ EE-Perspektive mit der rechten Maustaste auf das EJB-Modul für die
Enterprise-Bean-Instanz und klicken Sie anschließend auf . Im Eigenschaftenfenster wird ein
Notizbuch mit den Eigenschaften der Enterprise-Bean angezeigt.
- Wählen Sie im Teilfenster mit den Eigenschaften das Register "Beans" aus.
- Wählen Sie die Bean aus, die Sie ändern möchten.
- Wählen Sie im Abschnitt für die WebSphere-Erweiterungen unter
Bean-Cache das Attribut Aktivieren bei auf ActivitySession:
Eine Enterprise-Bean mit dieser Aktivierungsrichtlinie wird wie folgt aktiviert
und passiviert:
- an einer ActivitySession-Grenze, falls der ActivitySession-Kontext bei der Aktivierung vorhanden ist,
- an einer Transaktionsgrenze, falls ein Transaktionskontext, aber kein
ActivitySession-Kontext bei der Aktivierung vorhanden ist,
- andernfalls an einer Aufrufgrenze.
- Setzen Sie das Attribut Grenzwert im Gruppenfeld "Lokale Transaktionen"
auf ActivitySession: Wenn diese Einstellung verwendet wird, muss die lokale Transaktion im
Geltungsbereich einer ActivitySession, in der sie gestartet wurde, oder, falls kein
ActivitySession-Kontext vorhanden ist, in derselben Bean-Methode, in der sie gestartet
wurde, aufgelöst werden.
Die
Einstellung "ActivitySession" gilt nicht für EJB-Home-Methoden, z. B. für create- oder finder-Methoden.
EJB-Home-Methoden können nicht an einer ActivitySession teilnehmen, weil diese Situation zu Deadlocks führen kann.
- Legen Sie bei Entity-Beans oder Session-Beans die ActivitySession-Eigenschaften
für jede EJB-Methode fest.
- Wählen Sie im Eigenschaftsfenster das Register "ActivitySession" aus.
- Wählen Sie im Feld Configure ActivitySession policies die
Option Hinzufügen oder Bearbeiten aus, um das Attribut
ActivitySession-Typ
für Methoden der Enterprise-Bean zu konfigurieren. Gibt an, wie der Container die ActivitySession-Grenzwerte verwalten muss, wenn er einen
Methodenaufruf an die Geschäftsmethode einer Enterprise-Bean delegiert:
- Nie
- Der Container ruft Bean-Methoden ohne einen ActivitySession-Kontext
auf.
- Wenn der Client eine Bean-Methode innerhalb eines ActivitySession-Kontexts aufruft, löst der Container
eine InvalidActivityException-Ausnahme aus, die als
javax.rmi.RemoteException definiert ist.
- Wenn der Client eine Bean-Methode ohne ActivitySession-Kontext aufruft,
verhält sich der Container so, als wäre der Wert Nicht unterstützt
definiert. Der Client muss die Methode ohne ActivitySession-Kontext aufrufen.
- Verbindlich
- Der Container ruft die Bean-Methode immer in dem ActivitySession-Kontext auf,
der dem Client zugeordnet ist. Wenn
der Client versucht, die Bean-Methode ohne einen ActivitySession-Kontext aufzurufen, löst der Container
für den Client eine Ausnahme vom Typ ActivityRequiredException aus. Der ActivitySession-Kontext wird
an alle EJB-Objekte und Ressourcen weitergegeben, auf die eine Methode der Enterprise-Bean zugreift.
Die Ausnahme ActivityRequiredException ist als javax.rmi.RemoteException definiert.
- Erfordert neue(n)
- Der Container ruft die Bean-Methode immer in einem neuen
ActivitySession-Kontext auf. Dies gilt unabhängig davon, ob der Client die Methode
in einem oder ohne einen ActivitySession-Kontext aufruft. Der neue ActivitySession-Kontext
wird an alle Enterprise-Bean-Objekte und Ressourcen übergeben, die von dieser Bean-Methode verwendet werden.
Jeder empfangene ActivitySession-Kontext wird für die Dauer der Methode ausgesetzt und nach Beendigung der
Methode wieder aufgenommen. Der Container
startet vor der Zuteilung einer Methode eine neue ActivitySession und beendet diese vor dem Ende der Methode.
- Erforderlich
- Der Container ruft die Bean-Methode innerhalb eines ActivitySession-Kontexts
auf.
Wenn ein Client eine Bean-Methode in einem ActivitySession-Kontext aufruft, ruft der Container die
Bean-Methode im ActivitySession-Kontext des Clients auf.
Wenn ein Client eine Bean-Methode ohne ActivitySession-Kontext
aufruft, erstellt der Container einen neuen ActivitySession-Kontext und ruft die Bean-Methode dann in
diesem Kontext auf. Der ActivitySession-Kontext wird an alle Enterprise-Bean-Objekte und Ressourcen übergeben,
die von dieser Bean-Methode verwendet werden.
- Nicht unterstützt
- Der Container ruft Bean-Methoden ohne einen ActivitySession-Kontext
auf. Wenn ein Client eine Bean-Methode in einem ActivitySession-Kontext aufruft, setzt der
Container die Zuordnung zwischen der ActivitySession und dem aktuellen Thread aus, bevor
er die Methode für die Enterprise-Bean-Instanz aufruft. Der Container stellt die
ausgesetzte Zuordnung wieder her, wenn der Methodenaufruf zurückgegeben wird. Der ausgesetzte ActivitySession-Kontext
wird nicht an alle Enterprise-Bean-Objekte und Ressourcen übergeben, die von dieser Bean-Methode
verwendet werden.
- Unterstützt
- Wenn der Client die Bean-Methode innerhalb einer ActivitySession aufruft, ruft der Container die
Bean-Methode innerhalb eines ActivitySession-Kontexts auf. Wenn der Client die
Bean-Methode ohne einen ActivitySession-Kontext aufruft, ruft der Container die
Bean-Methode ebenfalls ohne ActivitySession-Kontext auf. Der ActivitySession-Kontext
wird an alle Enterprise-Bean-Objekte und Ressourcen übergeben, die von dieser Bean-Methode verwendet werden.
- Klicken Sie auf Weiter.
- Wählen Sie die Methoden aus, auf die die Richtlinie
der ActivitySession-Typen angewendet werden soll.
- Klicken Sie auf Fertigstellen.
Wie der Container die ActivitySession-Grenzen beim Delegieren eines Methodenaufrufs verwaltet, richtet
sich nach dem hier definierten Attribut ActivitySession-Typ und dem
Transaktionstyp des Containers. Informationen hierzu finden Sie im Artikel
zum Konfigurieren von Attributen für die transaktionsorientierte Implementierung.
Weitere Einzelheiten zur Beziehung zwischen diesen beiden Eigenschaften finden Sie im Artikel
zur gemeinsamen Verwendung von ActivitySession- und Transaktionscontainerrichtlinien.
- Speichern Sie die am Implementierungsdeskriptor vorgenommenen Änderungen.
- Schließen Sie den Editor für Implementierungsdeskriptoren.
- Wenn Sie dazu aufgefordert werden, klicken Sie auf Ja, um
die Änderungen am Implementierungsdeskriptor zu speichern.
- Überprüfen Sie die Archivdateien. Weitere Informationen zum Prüfen von Dateien mit
Rational Application Developer finden Sie in den Informationen zu Rational Application
Developer.
- Klicken Sie im Popup-Menü des Projekts auf Implementieren, um den EJB-Implementierungscode zu
generieren.
- Optional: Testen Sie das fertig gestellte Modul in einer Installation von WebSphere Application
Server. Klicken Sie mit der rechten Maustaste auf ein Modul, klicken Sie auf Auf Server ausführen, und folgen Sie den Anweisungen
im daraufhin angezeigten Assistenten.
Wichtig: Verwenden Sie die Option Auf Server ausführen nur für Einheitentests. Das Assembliertool steuert die WAS-Installation, und
das Assembliertool überschreibt,
sofern
eine Anwendung fern veröffentlicht ist, die Konfigurationsdatei dieses Servers. Verwenden Sie die Option Auf Server ausführen nicht auf Produktionsservern.
Nächste Schritte
Verwenden Sie nach der Assemblierung Ihrer Anwendung ein Systemverwaltungstool, um
die EAR-Datei in dem Anwendungsserver zu implementieren, in dem die Anwendung ausgeführt werden soll.
Wenn Sie beispielsweise die Administrationskonsole verwenden möchten,
lesen Sie den Artikel zum Implementieren und Verwalten von Unternehmensanwendungen.