JPA im Bundle verwenden, um auf Daten zuzugreifen

Informationen zu diesem Vorgang

Beim Zugriff auf Daten unter Verwendung von JPA im Bundle wird davon ausgegangen, dass Sie in einem Bundle arbeiten, das als Java™ EE-Modul auf dem Server behandelt wird. Zum Beispiel ein OSGi-Webanwendungsbundle, für das eine JPA-Facette aktiviert ist und das Entitäten und die Logik für den Zugriff auf Daten sowie das Verarbeiten und Anzeigen von Daten mit JPA enthält. Ein weitere Beispiel ist ein Webprojekt, das JPA-Entitäten und die Logik für die Verarbeitung von Daten mit JPA enthält, die in einer OSGi-Anwendung und nicht im Rahmen der EAR-Implementierung publiziert werden.

Sie müssen Ihr OSGi-Bundle konfigurieren und die Datenquellen WebSphere Application Server hinzufügen, bevor Sie auf die JPA-Persistenzeinheiten zugreifen können.

Tipp:

Stellen Sie sicher, dass Ihre JPA-Persistenzdatei Referenzen auf eine JTA-Datenquelle (Java Transaction API) und eine Nicht-JTA-Datenquelle enthält.

In JPA gibt es zwei transaktionsorientierte Muster für den Zugriff auf eine Datenquelle:
jta-data-source
Das Muster für JTA-Ressourcen (Java Transaction API) hängt von globalen Transaktionen ab. Das JTA-Ressourcenmuster wird in der Regel im Geltungsbereich einer EJB-Sitzungsfassade (Enterprise JavaBeans) eingesetzt. Bei dieser Konfiguration kann die Session-Bean den Transaktions- und Sicherheitskontext steuern, während JPA die Persistenzzuordnungen durchführt. In diesem Fall verwendet die Anwendung nicht die Schnittstelle EntityTransaction, sondern greift auf den für die globale Transaktion registrierten EntityManager zurück.
non-jta-data-source
Das Muster für Nicht-JTA-Ressourcen wird für eine Einzelressource verwendet, wenn keine globalen Transaktionen vorliegen. Das Nicht-JTA-Ressourcenmuster wird in der Regel im Geltungsbereich einer Webanwendung oder eines Anwendungsclients eingesetzt. Die Anwendung steuert die Transaktion mit der Datenquelle über die Schnittstelle EntityTransaction.

In persistence.xml-Dateien für eine OSGi-Anwendung greifen die Elemente jta-data-source und non-jta-data-source mit einer JNDI-Suche (Java Naming and Directory Interface), einer JNDI-Suche in der Service-Registry oder über Blueprint auf die Datenquellen zu.

Wenn die JTA- und Nicht-JTA-Datenquellen nicht in der Datei persistence.xml konfiguriert sind, werden die für den Server konfigurierten JTA- und Nicht-JTA-Standarddatenquellen verwendet. Der Standardwert ist jeweils null. Einige Features für JPA-Entitäten erfordern, dass eine Nicht-JTA-Datenquelle angegeben ist. Dies ist beispielsweise bei der automatischen ID-Generierung für Entitäten der Fall.

Vorgehensweise

  1. Fügen Sie der Datei persistence.xml Nicht-JTA-Datenquellen hinzu:
    1. Öffnen Sie die Datei persistence.xml im Editor.
    2. Sehen Sie sich im Abschnitt Übersicht die Komponentenliste an und wählen Sie Ihre Entität aus, um deren Details anzuzeigen.
    3. Geben Sie im Feld Nicht-JTA-Datenquelle den globalen JNDI-Namen einer Nicht-JTA-Datenquelle ein. Beispiel: osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdbnojta).
  2. Fügen Sie der Datei persistence.xml JTA-Datenquellen hinzu:
    1. Öffnen Sie die Datei persistence.xml im Editor.
    2. Sehen Sie sich im Abschnitt Übersicht die Komponentenliste an und wählen Sie Ihre Entität aus, um deren Details anzuzeigen.
    3. Geben Sie im Feld JTA-Datenquelle den globalen JNDI-Namen der Datenquelle ein. Beispiel: osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdb).
  3. Fügen Sie der Administrationskonsole von WebSphere Application Server einen JDBC-Provider hinzu:
    1. Wechseln Sie in die Ansicht "Server".
    2. Klicken Sie mit der rechten Maustaste auf Ihre Serverinstanz und wählen Sie Starten aus.
    3. Klicken Sie mit der rechten Maustaste auf Ihre Serverinstanz und wählen Sie Verwaltung > Administrationskonsole ausführen aus, um die Administrationskonsole zu öffnen.
    4. Klicken Sie auf Ressourcen > JDBC > JDBC-Provider.
    5. Klicken Sie auf der Seite "JDBC-Provider" auf Neu. Der Assistent "Datenquelle erstellen" wird geöffnet.
    6. Führen Sie die Anweisungen im Assistenten aus, um den JDBC-Provider zu erstellen.
    7. Speichern Sie die Änderungen.
  4. Fügen Sie der Administrationskonsole von WebSphere Application Server Datenquellendefinitionen hinzu:
    1. Klicken Sie in der Administrationskonsole auf Ressourcen > JDBC > Datenquellen, um die Seite Datenquellen in der Konsole zu öffnen.
    2. Klicken Sie auf der Seite Datenquellen auf Neu, um eine Datenquellendefinition mit einem JNDI-Namen zu erstellen, der auf die in Ihrer Datei persistence.xml angegebene JTA-Verbindungsdefinition gesetzt ist. Beispiel: jdbc/blogdb.
    3. Klicken Sie auf der Seite Datenquellen auf Neu, um eine weitere Datenquellendefinition mit einem JNDI-Namen zu erstellen, der auf die in Ihrer Datei persistence.xml angegebene Nicht-JTA-Verbindungsdefinition gesetzt ist. Beispiel: jdbc/blogdbnojta.
    4. Wenn die Datenquelle für die Nicht-JTA-Verbindung erstellt wird, klicken Sie auf der Seite Datenquellen der Administrationskonsole auf die Definition für die Nicht-JTA-Verbindung. Die Seite Konfiguration wird geöffnet.
    5. Klicken Sie im Abschnitt "Zusätzliche Eigenschaften" auf Eigenschaften der WebSphere Application Server-Datenquelle.
    6. Wählen Sie Nicht transaktionsorientierte Datenquelle aus. Die Verwendung des Elements <non-jta-data-source> im Anwendungsserver setzt eine besondere Konfiguration für eine nicht transaktionsorientierte Datenquelle voraus. Für den Anwendungsserver definierte Datenquellen funktionieren nicht als <non-jta-data-source>, weil alle vom Anwendungsserver konfigurierten Datenquellen automatisch mit dem aktuellen Transaktionskontext eingetragen werden. Wenn Sie diese automatische Eintragung verhindern möchten, fügen Sie eine angepassten Datenquelleneigenschaft hinzu: nonTransactionalDataSource=true.

Ergebnisse

Die Datei persistence.xml und WebSphere Application Server sind für den Zugriff auf JPA in einem OSGi-Bundle konfiguriert.
Symbol das den Typ des Artikels anzeigt. Taskartikel
Nutzungsbedingungen für Information Center | Feedback

Symbol für Zeitmarke Letzte Aktualisierung: 29.04.2014

Dateiname: taccessjpainbundle.html