Transaktionsattribute konfigurieren

Sie können die transaktionsorientierten Implementierungsdeskriptorattribute für ein EJB- oder Webmodul konfigurieren, um einer Unternehmensanwendung die Verwendung von Transaktionen zu ermöglichen.

Vorbereitende Schritte

Sie müssen eine EAR-Datei (Enterprise Archive) für eine Anwendungskomponente besitzen, die im Anwendungsserver implementiert werden kann.

Informationen zu diesem Vorgang

Sie können die Implementierungsattribute einer Anwendung über ein Assembliertool konfigurieren.

Sie können Rational Application Developer oder ein funktional entsprechendes Tool verwenden, um die Implementierungsattribute einer Anwendung zu konfigurieren.

Wenn Sie Rational Application Developer verwenden möchten, um Transaktionsattribute im Implementierungsdeskriptor für eine Anwendungskomponente (Enterprise-Bean oder Servlet) zu definieren, führen Sie die folgenden Schritte aus:

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. 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. Klicken Sie auf Fertigstellen.
  3. Klicken Sie in der Sicht "Projektexplorer" der Java EE-Perspektive mit der rechten Maustaste auf Öffnen mit > Editor für Implementierungsdeskriptor. Führen Sie den entsprechenden Schritt aus, um die Komponenteninstanz zu suchen:
    • Für eine Session-Bean klicken Sie auf EJB-Module > EJB-Modulinstanz > Implementierungsdeskriptor > Session-Beans, und wählen Sie die Bean-Instanz aus.
    • Für ein Servlet klicken Sie auf Webmodule > Webanwendung > Implementierungsdeskriptor > Webkomponente, und wählen Sie anschließend die Servletinstanz aus.
    Im Teilfenster mit den Eigenschaften wird daraufhin ein Eigenschaftenotizbuch für den Implementierungsdeskriptor der Komponente angezeigt.
  4. Optional: Definieren Sie das Attribut "Transaktionstyp", das den Transaktionstyp für den Aufruf einer Methode durch den Container definiert. Dieses Attribut gilt nur für Session-Beans. Sie können dieses Attribut wie folgt auf Container oder Bean setzen:
    • Verwenden Sie für containergesteuerte Transaktionen den Attributwert "Container".
    • Verwenden Sie für Bean-gesteuerte Transaktionen den Attributwert "Bean".
  5. Wählen Sie im Notizbuch für den Implementierungsdeskriptor das Register Bean aus. Konfigurieren Sie im Abschnitt "WebSphere-Erweiterungen" optional die Attribute für lokale Transaktionen. Um die Verwaltung lokaler Transaktionseinbettungen zu ermöglichen, müssen Sie die folgenden Attribute für Komponentenerweiterung konfigurieren. Diese Attribute konfigurieren für die Komponente das Verhalten der LTC-Umgebung (Local Transaction Containment), die der Container immer erstellt, wenn keine globale Transaktion vorliegt.
    Grenzwert
    Diese Einstellung gibt die Einschlussgrenzen an, innerhalb derer alle enthaltenen lokalen Transaktionen des Ressourcenmanagers (Resource Manager Local Transactions) ausgeführt werden müssen. Die gültigen Werte sind "BeanMethod" und "ActivitySession".
    • BeanMethod: Dies ist der Standardwert. Wenn Sie diese Option auswählen, müssen RMLTs innerhalb der Bean-Methode aufgelöst werden, in der sie gestartet wurden.
    • [Nur für EJB-Komponenten] ActivitySession: RMLTs müssen im Geltungsbereich der ActivitySession, in der sie gestartet wurden, bzw. bei Fehlen eines ActivitySession-Kontextes in der Bean-Methode aufgelöst werden, in der sie gestartet wurden.
      Anmerkung: Die Option "ActivitySession" wird im Web-Container nicht unterstützt.
    Auflöser
    Diese Einstellung gibt die Komponente an, die für das Einleiten und Beenden von RMLTs zuständig ist. Die gültigen Werte sind "Application" und "ContainerAtBoundary".
    • Application: Dies ist der Standardwert. Die Anwendung ist für das Starten und Beenden der RMLTs innerhalb der LTC-Grenzen (Local Transaction Containment) zuständig. Alle RMLTs, die am Ende der LTC-Grenzen nicht beendet sind, werden vom Container entsprechend dem Wert des Aktionsattributs "Nicht aufgelöst" bereinigt.
    • ContainerAtBoundary: Der Container ist für das Starten und Beenden der RMLTs innerhalb der LTC-Grenzen zuständig. Der Container startet eine RMLT bei der erstmaligen Verwendung einer Verbindung im LTC-Geltungsbereich und beendet sie automatisch am Ende des LTC-Geltungsbereichs. Wenn die LTC-Grenze auf ActivitySession gesetzt ist, werden die RMLTs als ActivitySession-Ressourcen registriert und von der ActivitySession ausgeführt. Wenn die LTC-Grenze auf BeanMethod gesetzt ist, werden die RMLTs am Ende der Methode vom Container festgeschrieben.
    Nicht aufgelöste Aktion
    Gibt die Richtung an, die der Container für die RMLTs vorschreibt, wenn diese am Ende der LTC-Grenze nicht aufgelöst sind und "Auflöser" auf "Application" gesetzt ist. Die gültigen Werte sind "Rollback" und "Commit".
    • Rollback: Dies ist der Standardwert. Am Ende der LTC-Grenze weist der Container eine ROLLBACK-Operation für alle nicht aufgelösten RMLTs an.
    • Commit: Am Ende der LTC-Grenze weist der Container eine COMMIT-Operation für alle nicht aufgelösten RMLTs an. Der Container weist die COMMIT-Operation für die RMLTs nur an, wenn keine unbehandelte Ausnahme vorhanden ist. Wird die Anwendungsmethode, die in einem lokalen Transaktionskontext ausgeführt wird, mit einer Ausnahme beendet, werden alle nicht aufgelösten RMLTs vom Container rückgängig gemacht. Dasselbe Verhalten gilt für globale Transaktionen.
    Gemeinsam benutzbar
    Gibt an, ob die Komponente einen lokalen Transaktionseinschluss (LTC, Local Transaction Containment) gemeinsam nutzen kann. Ein neuer LTC wird nur gestartet, wenn noch kein gemeinsam nutzbarer LTC vorhanden ist. Anwendungen, die gemeinsam nutzbare LTCs verwenden, können die in einem gemeinsam nutzbaren LTC verwendeten Ressourcenmanagerverbindungen nicht explizit festschreiben oder rückgängig machen. (Sie können jedoch Verbindungen verwenden, die über die Funktionalität der automatischen Festschreibung verfügen.)

    Wenn eine Anwendung Arbeit ohne automatische Festschreibung in einem LTC startet, für den das Attribut "Resolver" auf Application und das Attribut "Shareable" auf True gesetzt ist, wird zur Laufzeit eine Ausnahme ausgelöst. Beispielsweise ist eine Arbeit ohne automatische Festschreibung für eine JDBC-Verbindung die Arbeit, die die Anwendung auszuführen versucht, nachdem die Methode "setAutoCommit(false)" verwendet wurde, um die automatische Festschreibung in der Verbindung zu inaktivieren. Enterprise-Beans, die Bean-gesteuerte Transaktionen verwenden, können nicht assembliert werden, wenn das Attribut "Shareable" in der LTC-Konfiguration festgelegt wurde.

    Sie müssen das Attribut Shareable für alle Komponenten angeben, die den lokalen Transaktionseinschluss gemeinsam nutzen. Die Komponente, die den gemeinsam nutzbaren lokalen Transaktionseinschluss erstellt, bestimmt die weiteren Eigenschaften des gemeinsam genutzten lokalen Transaktionseinschlusses, z. B. den Wert des Attributs "Resolver".

  6. Konfigurieren Sie im Abschnitt "WebSphere-Erweiterungen" optional die Attribute für globale Transaktionen. Diese Attribute legen für die Komponente das Verhalten bei einer globalen Transaktion fest.
    Component Transaction Timeout
    (Gilt nur für Enterprise-Beans mit containergesteuerten Transaktionen:) Gibt das Transaktionszeitlimit für jede vom Container für die Enterprise-Bean gestartete neue globale Transaktion in Sekunden an. Für Transaktionen, die für die Komponente gestartet werden, überschreibt das Zeitlimit für Komponententransaktionen das in den Einstellungen des Transaktionsservice für den Anwendungsserver konfigurierte Zeitlimit für die Gesamtlebensdauer einer Transaktion.

    Mit den folgenden Attributen wird die Unterstützung für WS-AtomicTransaction und WS-BusinessActivity nur für JAX-RPC-Anwendungen aktiviert:

    Atomic-Transaktion von Web-Services verwenden
    Gilt nur für Enterprise-Beans: Wenn dieses Attribut ausgewählt ist und die Anwendungskomponente Web-Service-Anforderungen stellt, werden alle Transaktionskontexte mit den Web-Service-Anforderungen entsprechend der WebSphere-Unterstützung für WS-AtomicTransaction, die im Artikel WSAT-Unterstützung (Web Services Atomic Transaction) im Anwendungsserver beschrieben ist, weitergegeben. Wenn dieses Attribut nicht ausgewählt ist, wird in Web-Service-Anforderungen kein Transaktionskontext übergeben.
    Atomic-Transaktionen von Web-Services bei Anforderungen senden
    Gilt nur für Webkomponenten: Wenn dieses Attribut ausgewählt ist und die Anwendungskomponente Web-Service-Anforderungen stellt, werden alle Transaktionskontexte mit den Web-Service-Anforderungen entsprechend der WebSphere-Unterstützung für WS-AtomicTransaction, die im Artikel WSAT-Unterstützung (Web Services Atomic Transaction) im Anwendungsserver beschrieben ist, weitergegeben. Wenn dieses Attribut nicht ausgewählt ist, wird in Web-Service-Anforderungen kein Transaktionskontext übergeben.
    Mit Web Services Atomic Transaction in eingehenden Anforderungen ausführen
    Gilt nur Webkomponenten: Wenn dieses Attribut ausgewählt ist, werden Webanwendungskomponenten für die Ausführung in einem empfangenen WS-AtomicTransaction-Kontext vorbereitet. Eine Webanwendungskomponente kann unter einem empfangenen WS-AtomicTransaction-Kontext auf ähnliche Weise wie eine Enterprise-Bean mit dem Containertransaktionstyp "Supports" ausgeführt werden. Wenn dieses Attribut nicht ausgewählt ist, setzt der Container der Webanwendungskomponente alle empfangenen Transaktionskontexte aus. Dieses Verhalten ist mit dem Verhalten eines EJB-Containers für eine Enterprise-Bean mit dem Containertransaktionstyp "NotSupported" vergleichbar.

    Wenn Ihre Anwendung JAX-WS verwendet, aktivieren Sie die Unterstützung für WS-AtomicTransaction bzw. WS-BusinessActivity, indem Sie einen Richtliniensatz erstellen, dem Richtliniensatz den Richtlinientyp "WS-Transaction" hinzufügen und den Richtliniensatz dem Service oder Client zuordnen.

    Wenn ein Richtliniensatz, der einem Client zugeordnet ist, den Richtlinientyp "WS-Transaction" enthält, werden alle aktiven globalen Transaktionskontexte mit einer Web-Service-Anforderung weitergegeben. Dies ist mit dem Verhalten vergleichbar, das bei der Verwendung der Implementierungsdeskriptorattribute "Atomic-Transaktion von Web-Services verwenden" und "Atomic-Transaktionen von Web-Services bei Anforderungen senden", die zuvor beschrieben wurden, zu beobachten ist. Wenn der Richtlinientyp "WS-Transaction" enthalten ist, wird der Service unter jedem empfangenen WS-AtomicTransaction-Kontext ausgeführt. Dies ist mit dem Verhalten vergleichbar, das bei der Verwendung des Implementierungsdeskriptorattributs "Unter Verwendung der Atomic-Transaktion von Web-Services für eingehende Anforderungen ausführen", das zuvor beschrieben wurde, zu beobachten ist.

  7. Gilt nur für EJB-Komponenten: Konfigurieren Sie für containergesteuerte Transaktionen, wie der Container die Transaktionsgrenzen verwaltet, wenn er einen Methodenaufruf an die Geschäftsmethode einer Enterprise-Bean delegiert:
    1. Wählen Sie im Notizbuch für den Implementierungsdeskriptor das Register Assemblierung aus. Im Abschnitt "Containertransaktionen" wird eine Tabelle mit den Methoden für Enterprise-Beans angezeigt.
    2. Setzen Sie für jede Methode der Enterprise-Bean den Containertransaktionstyp auf einen entsprechenden Wert. Der Standardwert für den Containertransaktionstyp ist "Required", d. h., der Methodenaufruf findet im Kontext einer Transaktion statt. Diese Transaktion ist entweder die (lokale oder ferne) Transaktion der Clientkomponente bzw. eine vom Container der Komponente gestartete neue Transaktion, falls die Clientkomponente nicht in einer Transaktion ausgeführt wird.

    Wenn die Anwendung "ActivitySessions" verwendet, richtet sich die Art und Weise, in der der Container Transaktionsgrenzen beim Delegieren eines Methodenaufrufs verwaltet, nach dem Containertransaktionstyp, den Sie in dieser Task festlegen und dem Attribut für den ActivitySession-Typ, das im Artikel Implementierungsattribute für ActivitySession eines EJB-Moduls definieren beschrieben wird. Weitere Einzelheiten zur Beziehung zwischen diesen beiden Eigenschaften finden Sie im Artikel Richtlinien für ActivitySessions und Transaktionscontainer in Kombination.

  8. Setzen Sie für Web-Service-Anwendungen, die eine SOAP/JMS-Bindung verwenden und an WS-AtomicTransactions teilnehmen, den Containertransaktionstyp der nachrichtengesteuerten Bean "JMS router MDB" auf den Wert "NotSupported" (siehe die Beschreibung im vorherigen Schritt). Web-Service-Anwendungen, die eine SOAP/JMS-Bindung verwenden, enthalten eine Router-MDB mit dem Namen "JMS router MDB" in der assemblierten EAR-Datei. Wenn ein Web-Service eine SOAP/JMS-Bindung verwendet und an WS-AtomicTransactions teilnimmt, wie im Artikel WSAT-Unterstützung (Web Services Atomic Transaction) im Anwendungsserver beschrieben wird, setzen Sie den Containertransaktionstyp von "JMS router MDB" auf den Wert "NotSupported".

    Für Web-Service-Anwendungen, die eine SOAP/HTTP-Bindung verwenden und an WS-AtomicTransactions teilnehmen, müssen Sie dies nicht tun.

  9. Gilt nur für Clientanwendungskomponenten: Aktivieren Sie bei Bedarf die Unterstützung für die Transaktionsdemarkation durch den Client. Wählen Sie im Notizbuch für den Implementierungsdeskriptor das Kontrollkästchen JTA-Demarkation zulassen aus. Diese Option weist den Client-Container an, die JTA-Schnittstelle (Java™ Transaction API) "UserTransaction" in JNDI an "java:comp/UserTransaction" für die Clientkomponente zu binden. Die für die Transaktionsunterstützung im Client-Container geltenden Beschränkungen sind im Artikel Clientunterstützung für Transaktionen beschrieben.
  10. 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.
  11. Ü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.
  12. Klicken Sie im Menü des Projekts auf Implementieren, um den EJB-Implementierungscode zu generieren.
  13. Optional: Testen Sie das fertig gestellte Modul in einer Anwendungsserverinstallation. 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 Anwendungsserverinstallation. Wenn eine Anwendung über Remote-Zugriff veröffentlicht wird, überschreibt das Assembliertool die Serverkonfigurationsdatei für diesen Server. Verwenden Sie die Option Auf Server ausführen nicht auf Produktionsservern.

Nächste Schritte

Verwenden Sie nach dem Assemblieren Ihrer Anwendung ein Systemverwaltungstool, z. B. die Administrationskonsole, um die EAR-Datei in dem Anwendungsserver zu implementieren, in dem die Anwendung ausgeführt werden soll.

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=tjta_entra2
Dateiname:tjta_entra2.html