Voraussetzungen für das Festlegen von Isolationsstufen für Datenzugriff
Dieser Artikel beschreibt die Kriterien und Auswirkungen von Isolationsstufen auf Datenzugriffskomponenten mit EJB-2.x-Modulen (Enterprise JavaBeans).
In einem EJB-1.1-Modul können Sie die Isolationsstufe auf Methoden- oder Bean-Ebene definieren. Dies gilt auch für CMP-1.1-Beans, die Sie zu EJB-2.x-Modulen assemblieren. (In WebSphere Application Server kann der Versionsstand 1.1 unabhängig von der übergeordneten Version des Moduls im Implementierungsdeskriptor einer CMP-Bean deklariert werden.)
Die Möglichkeit, die Isolationsstufe auf Methoden- oder Bean-Ebene festzulegen, gilt nicht für andere Enterprise-Beans in einem EJB-2.x-Modul. Dazu gehören auch CMP-2.x-Beans. In WebSphere Application Server Version 5.0 wurde diese Funktion für EJB-2.0-Module entfernt, um eine Architektur bereitzustellen, die eine effizientere Verbindungsnutzung bietet.
- Die Isolationsstufe kann nicht auf EJB-Methoden- oder Bean-Ebene definiert werden.
- Wenn Sie eine JDBC-Anwendung, eine BMP-Bean oder ein Servlet für die Teilnahme an globalen Transaktionen konfigurieren, können gemeinsam genutzte Verbindungen keine benutzerdefinierte Isolationsstufe akzeptieren. WebSphere Application Server kann eine benutzerdefinierte Isolationsstufe nur in einer Verbindung definieren, die in einer globalen Transaktion nicht gemeinsam genutzt wird. Es wird davon abgeraten, Isolationsstufen in gemeinsam nutzbaren Verbindungen zu definieren.
- Isolationsstufe in Verbindungen, die von 2.x-CMP-Bean verwendet werden
- Wenn eine CMP-2.x-Bean in einem EJB-2.x-Modul eine neue Datenquelle für den Zugriff auf eine Back-End-Datenbank verwendet, wird die Isolationsstufe von der Laufzeitumgebung von WebSphere Application Server basierend auf dem Typ der der Bean oder der aufrufenden Methode zugewiesenen Zugriffsart bestimmt. Die Benutzer anderer Verbindungen ohne CMP-Unterstützung können auf dieselbe Datenquelle zugreifen und für die Parallelitätssteuerung die Unterstützung für Zugriffsarten und Anwendungsprofile verwenden.
- Verbindungen, die von anderen 2.x-Enterprise-Beans und anderen Komponenten ohne CMP verwendet werden
- Für alle anderen JDBC-Verbindungsinstanzen (anderen Verbindungen, als denen, die von CMP-Beans verwendet werden)
können Sie in der Ressourcenreferenz für die Datenquelle eine Isolationsstufe festlegen. Für
gemeinsam nutzbare Verbindungen, die in globalen Transaktionen ausgeführt werden, ist
diese Einstellung die einzige Möglichkeit, die Isolationsstufe für Verbindungen festzulegen. Es ist nicht zulässig, die Isolationsstufe für gemeinsam nutzbare Verbindungen, die in globalen Transaktionen
ausgeführt werden, direkt mit der Methode setTransactionIsolation() festzulegen.
Um in Verbindungen eine andere Isolationsstufe zu verwenden, müssen Sie eine andere Ressourcenreferenz
bereitstellen. Legen Sie diese Standardeinstellungen mit Ihrem
Assembliertool fest.
Jede Ressourcenreferenz ist einer Isolationsstufe zugeordnet. Wenn Ihre Anwendung den JNDI-Namen (Java™ Naming and Directory Interface) aus dieser Ressourcenreferenz für das Suchen einer Datenquelle verwendet, hat jede Verbindung, die von dieser Datenquelle, die diese Ressourcenreferenz verwendet, zurückgegeben wird, dieselbe Isolationsstufe.
Komponenten, die gemeinsam nutzbare Verbindungen mit mehreren Isolationsstufen verwenden müssen, können mehrere Ressourcenreferenzen mit unterschiedlichen JNDI-Namen erstellen und die Datenquelle für die benötigte Isolationsstufe vom Code suchen lassen. Auf diese Weise verwenden Sie getrennte Verbindungen, in denen unterschiedliche Isolationsstufen aktiviert sind.
Es ist möglich, diese Ressourcenreferenzen derselben konfigurierten Datenquelle zuzuordnen. Die Verbindungen stammen weiterhin aus demselben zugrunde liegenden Pool. Allerdings lässt der Verbindungsmanager die gemeinsame Nutzung von Verbindungen, die von Ressourcenreferenzen mit unterschiedlichen Isolationsstufen angefordert werden, nicht zu. Stellen Sie sich folgendes Szenario vor:- Eine Datenquelle ist an zwei Ressourcenreferenzen gebunden: jdbc/RRResRef und jdbc/RCResRef.
- In RRResRef ist die Isolationsstufe RepeatableRead definiert, in RCResRef die Isolationsstufe ReadCommitted.
Das Produkt setzt nicht voraus, dass Sie die Isolationsstufe in der Ressourcenreferenz für eine Datenquelle in einem Anwendungsmodul ohne CMP festlegen. Wenn Sie in der Ressourcenreferenz keine Isolationsstufe oder wenn Sie TRANSACTION_NONE festlegen, verwendet die Laufzeitumgebung von WebSphere Application Server eine Standardisolationsstufe für die Datenquelle. Application Server verwendet die für den jeweiligen JDBC-Treiber gültige Standardeinstellung.
Für die meisten Treiber verwendet WebSphere Application Server die Standardisolationsstufe TRANSACTION_REPEATABLE_READ. Für Oracle-Treiber verwendet WebSphere Application Server jedoch die Isolationsstufe TRANSACTION_READ_COMMITTED. Verwenden Sie die folgende Tabelle als Kurzübersicht:
Datenbank: Standardisolationsstufe: DB2 RR Oracle RC Sybase RR Informix RR Apache Derby RR SQL Server RR Anmerkung: Dieselben Standardisolationsstufen werden für direkte JNDI-Lookup-Operationen für eine Datenquelle verwendet.- RR = JDBC Repeatable Read (Wiederholbarer Lesevorgang) - (TRANSACTION_REPEATABLE_READ)
- RC = JDBC Read Committed (Festgeschriebene Daten lesen) - (TRANSACTION_READ_COMMITTED)
Zum Anpassen der Standardisolationsstufe kann die angepasste Eigenschaft "webSphereDefaultIsolationLevel" für die Datenquelle verwendet werden. In der Regel sollten Sie die Isolationsstufe im Implementierungsdeskriptor definieren, wenn Sie die EAR-Datei paketieren. In bestimmten Situationen kann es jedoch erforderlich sein, die Standardisolationsstufe anzupassen. Diese Eigenschaft hat keine Auswirkungen, wenn eine der oben aufgeführten Optionen verwendet wird. Außerdem wird diese angepasste Eigenschaft für Situationen bereitgestellt, in denen keine andere Möglichkeit zum Festlegen der Isolationsstufe besteht.
Verwenden Sie folgende Werte für die angepasste Eigenschaft "webSphereDefaultIsolationLevel":
Gehen Sie wie folgt vor, um diese angepasste Eigenschaft für eine Datenquelle zu definieren:Gültige Werte JDBC-Isolationsstufe DB2-Isolationsstufe 8 TRANSACTION_SERIALIZABLE Repeatable Read (RR) 4 (Standardwert) TRANSACTION_REPEATABLE_READ Read Stability (RS) 2 TRANSACTION_READ_COMMITTED Cursor Stability (CS) 1 TRANSACTION_READ_UNCOMMITTED Uncommitted Read (UR) 0
TRANSACTION_NONE No Commit (NC) - Klicken Sie auf .
- Klicken Sie im Abschnitt "Weitere Eigenschaften" auf Datenquellen.
- Klicken Sie auf den Namen der Datenquelle.
- Klicken Sie auf Angepasste Eigenschaften.
- Erstellen Sie die angepasste Eigenschaft "webSphereDefaultIsolationLevel".
- Klicken Sie auf Neu.
- GEben Sie im Namensfeld den Namen" webSphereDefaultIsolationLevel" ein.
- Geben Sie einen gültigen Wert im Wertefeld ein.
- Isolationsstufe der Ressourcenreferenz
- Isolationsstufe, die durch die Richtlinie für Zugriffsarten festgelegt ist
- Angepasste Eigenschaft, die eine Isolationsstufe konfiguriert
- Standardeinstellung von Application Server