Implementierungsattribute für ActivitySession eines EJB-Moduls definieren

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

  1. Starten Sie das Assembliertool. Weitere Informationen finden Sie in der Dokumentation zu Rational Application Developer.
  2. 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:

    1. Klicken Sie auf Datei > Importieren > EAR-Datei.
    2. Klicken Sie auf Weiter. Wählen Sie dann die EAR-Datei aus.
    3. Wählen Sie im Feld "Zielserver" den Eintrag WebSphere Application Server v7.0 aus.
    4. Klicken Sie auf Fertigstellen.
  3. 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 Öffnen mit > Editor für Implementierungsdeskriptor. Im Eigenschaftenfenster wird ein Notizbuch mit den Eigenschaften der Enterprise-Bean angezeigt.
  4. Wählen Sie im Teilfenster mit den Eigenschaften das Register "Beans" aus.
  5. Wählen Sie die Bean aus, die Sie ändern möchten.
  6. 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.
  7. 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.

  8. Legen Sie bei Entity-Beans oder Session-Beans die ActivitySession-Eigenschaften für jede EJB-Methode fest.
    1. Wählen Sie im Eigenschaftsfenster das Register "ActivitySession" aus.
    2. 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.
    3. Klicken Sie auf Weiter.
    4. Wählen Sie die Methoden aus, auf die die Richtlinie der ActivitySession-Typen angewendet werden soll.
    5. 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.

  9. Speichern Sie die am Implementierungsdeskriptor vorgenommenen Änderungen.
    1. Schließen Sie den Editor für Implementierungsdeskriptoren.
    2. Wenn Sie dazu aufgefordert werden, klicken Sie auf Ja, um die Änderungen am Implementierungsdeskriptor zu speichern.
  10. Ü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.
  11. Klicken Sie im Popup-Menü des Projekts auf Implementieren, um den EJB-Implementierungscode zu generieren.
  12. 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.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tas_depejb2
Dateiname:tas_depejb2.html