Datenbanken

Auf relationale Datenbanken wird unter anderem von der Replication sowie vom Datenbank basierten Identity Provider aus zugegriffen. Damit der Zugriff auf die Datenbanken ausgeführt werden kann, müssen zuerst zu Ihrem Datenbanksystem passende JDBC-Treiber installiert werden.

Erst nach der Treiberinstallation legen Sie eine Datenbankverbindung an. Siehe Backend Connections vom Typ data_source

Treiberinstallation

Wenn Sie Datenbanksysteme verschiedener Hersteller ansprechen möchten, dann führen Sie die Treiberinstallationsschritte für jeden Datenbanktyp durch.

Durch die Treiberinstallation startet der Karaf diverse Bundles neu. Darunter auch das BPC Backend Core Bundle (bpc-be-core). Da in diesem die Benutzersitzungen transient vorgehalten werden, gehen diese durch den Neustart verloren und die Benutzer müssen sich neu anmelden.

Es wird empfohlen, die Datenbanktreiber über die zentrale Konfigurationsdatei zu konfigurieren. In diesem Fall können Sie ein Karaf-Update durchführen, ohne erneut eine Konfiguration vorzunehmen. Es muss lediglich der Datenbanktreiber im neuen Karaf bereitgestellt werden. In dem Fall können Sie die folgenden Punkte ignorieren.

Wenn es den Treiber für unterschiedliche Java Versionen gibt (z.B. bei MSSQL), dann verwenden Sie die Java 21 Version.

Oracle

  1. Möglichkeit: Aktuellster Treiber

    • Eine Internetverbindung ist zum automatischen Download des aktuellsten Treibers erforderlich

    • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus: feature:install pax-jdbc-oracle

  2. Möglichkeit: Spezifische Version des Treibers

    • Laden Sie den JDBC-Treiber für Ihre Oracle Version herunter: Download

    • Kopieren Sie den JDBC-Treiber (z.B. ojdbc8.jar) in den Ordner INSTALLATIONSVERZEICHNIS/karaf/deploy

    • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus: feature:install pax-jdbc-oracle

Zu Konfigurationen von Oracle-Datenbanken siehe Oracle-Datenbank.

Microsoft SQL Server (MSSQL)

  1. Möglichkeit: Relativ aktueller Treiber

    • Eine Internetverbindung ist zum automatischen Download des Treibers erforderlich

    • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus: feature:install pax-jdbc-mssql

  2. Möglichkeit: Spezifische Version des Treibers (offline)

    • Laden Sie den JDBC-Treiber für Ihre MSSQL Version herunter: Download

    • Kopieren Sie den JDBC-Treiber (z.B. mssql-jdbc-11.2.3.jre11.jar) in den Ordner INSTALLATIONSVERZEICHNIS/karaf/deploy

    • Nicht notwendig ist hierbei die Ausführung des Kommandos: feature:install pax-jdbc-mssql

  3. Möglichkeit: Spezifische Version des Treibers (online)

    • Eine Internetverbindung ist zum automatischen Download des Treibers erforderlich

    • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus: bundle:install -s mvn:com.microsoft.sqlserver/mssql-jdbc/13.2.0.jre11

    • Nicht notwendig ist hierbei die Ausführung des Kommandos: feature:install pax-jdbc-mssql

Bitte beachten Sie, dass der interne Treibername bei MSSQL über die verschiedenen Versionen nicht konstant ist. Das bedeutet, dass Sie bei einer Änderung des Treibers evtl. den angegebenen Treibernamen an bestehenden Backend Connections anpassen müssen.

MariaDB

  1. Möglichkeit: Relativ aktueller Treiber

    • Eine Internetverbindung ist zum automatischen Download des Treibers erforderlich

    • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus:

      feature:install pax-jdbc-mariadb
  2. Möglichkeit: Spezifische Version des Treibers

    • Laden Sie den JDBC-Treiber für Ihre MariaDB Version herunter: Download

    • Kopieren Sie den JDBC-Treiber (z.B. mariadb-java-client-3.5.7.jar) in den Ordner INSTALLATIONSVERZEICHNIS/karaf/deploy

    • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus:

      feature:install pax-jdbc-mariadb

MySQL

  1. Möglichkeit: Relativ aktueller Treiber

    • Eine Internetverbindung ist zum automatischen Download des Treibers erforderlich

    • Ein installierter MariaDB-Treiber muss zuvor deinstalliert werden. Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus:

      feature:uninstall pax-jdbc-mariadb
    • Bringen Sie die pax-jdbc Version ihrer Installation in Erfahrung. Dazu folgendes in der Karaf-Konsole ausführen:

      feature:repo-list | grep pax.jdbc
    • In der Karaf-Konsole nun folgende Kommandos ausführen und dabei ggfs. die Version anpassen:

       feature:repo-add mvn:org.ops4j.pax.jdbc/pax-jdbc-features/1.5.7/xml/features-gpl
       feature:install pax-jdbc-mysql

      Falls der relativ aktuelle Treiber z.B. 8.3.0 nicht aktuell genug ist und z.B. eine 8.4.0 verwendet werden muss. Dann zuerst diese Version laden und in den Ordner INSTALLATIONSVERZEICHNIS/karaf/deploy kopieren. Anschließend die Schritte von oben ausführen. Bei einem Major Versionssprung des JDBC Treibers die nächste Möglichkeit verwenden.

  2. Möglichkeit: Neue Major Version des Treibers

    Falls der JDBC Treiber der ersten aufgeführten Möglichkeit nicht aktuell genug ist (z.B. 8.3.0) und es sich bei dem zu verwendenden JDBC Treiber um eine neue Major Version handeln muss (z.B. 9.5.0). Dann muss die pax-jdbc-mysql jar-Datei gepatcht werden.

    • Ein installierter MariaDB-Treiber muss zuvor deinstalliert werden. Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus:

      feature:uninstall pax-jdbc-mariadb
    • Bringen Sie die pax-jdbc Version ihrer Installation in Erfahrung. Dazu folgendes in der Karaf-Konsole ausführen:

      feature:info pax-jdbc
    • In einer Shell folgende Befehle zum Laden und Entpacken des jar-Archivs ausführen und ggfs. die Version anpassen:

      mkdir pax-jdbc-mysql-patch
      cd pax-jdbc-mysql-patch
      wget https://repo1.maven.org/maven2/org/ops4j/pax/jdbc/pax-jdbc-mysql/1.5.7/pax-jdbc-mysql-1.5.7.jar
      jar xf pax-jdbc-mysql-1.5.7.jar
      rm pax-jdbc-mysql-1.5.7.jar
    • Mit einem Text-Editor in der META-INF/MANIFEST.MF die vorhandenen von/bis Versionsbereiche z.B. [8.3,9) auf [8.3,10) erhöhen. [8.3,9) legt fest, dass nur die MySQL JDBC Treiber von Version 8.3.0 bis kleiner Version 9.0.0 verwendet werden können. Dies erhöhen wir durch die Änderung auf 10.0.0. Dadurch kann auch eine Treiberversion 9.5.0 zum Einsatz kommen.

    • Die jar-Datei mit den Änderungen erstellen

      jar cfM pax-jdbc-mysql-1.5.7.jar .
    • Kopieren Sie die pax-jdbc-mysql-1.5.7.jar in den Ordner INSTALLATIONSVERZEICHNIS/karaf/deploy

  3. Möglichkeit: Spezifische Version des Treibers (offline)

    • Laden Sie den JDBC-Treiber für Ihre MySQL Version herunter (Platform Independent): Download

    • Kopieren Sie den JDBC-Treiber (z.B. mysql-connector-j-9.5.0.jar) in den Ordner INSTALLATIONSVERZEICHNIS/karaf/deploy

    • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus:

      feature:install pax-jdbc-spec
    • Stellen Sie sicher, dass bei der zusätzlichen Konfiguration der Datenbankverbindung der Wert für "xa" auf "false" gesetzt ist und dass als Treibername com.mysql.cj-native verwendet wird.

  4. Möglichkeit: Spezifische Version des Treibers (online)

    • Eine Internetverbindung ist zum automatischen Download des Treibers erforderlich

    • Öffnen Sie die Karaf-Konsole und führen Sie folgende Kommandos aus:

      bundle:install -s mvn:com.mysql/mysql-connector-j/9.5.0
      feature:install pax-jdbc-spec
    • Stellen Sie sicher, dass bei der zusätzlichen Konfiguration der Datenbankverbindung der Wert für "xa" auf "false" gesetzt ist und dass als Treibername com.mysql.cj-native verwendet wird.

PostgreSQL

  • Es ist keine Treiberinstallation erforderlich

  • Öffnen Sie die Karaf-Konsole und führen Sie folgendes Kommando aus: feature:install pax-jdbc-postgresql

Überprüfung bei Problemen

Treiber an der richtigen Stelle?

Stellen Sie sicher, dass der passende JDBC-Treiber im Verzeichnis INSTALLATIONSVERZEICHNIS/karaf/deploy zu finden ist.

Wurde der Treiber vom Karaf erkannt und registriert?

Dazu in der Karaf-Konsole folgendes Kommando ausführen: jdbc:ds-factories

Beispielausgabe eines registrierten Oracle JDBC-Treibers
virtimo@bpc()> jdbc:ds-factories
Name              │ Class                    │ Version │ Registration bundle
──────────────────┼──────────────────────────┼─────────┼────────────────────────────────
ojdbc6.jar-native │ oracle.jdbc.OracleDriver │ 0.0.0   │ ojdbc6.jar [229]
oracle            │ oracle.jdbc.OracleDriver │         │ org.ops4j.pax.jdbc.oracle [230]

Wurden alle notwendigen JDBC Features installiert?

Dazu in der Karaf-Konsole folgendes Kommando ausführen: feature:list | grep jdbc

In der Ausgabe müssen Sie sicherstellen, dass sich folgende Features im Status Started befinden:

  • jdbc

  • pax-jdbc-config

  • pax-jdbc-<datenbankname>

  • pax-jdbc-pool-dbcp2

Sollte z.B. das Feature pax-jdbc-pool-dbcp2 nicht im Status Started sein, dann geben Sie feature:install pax-jdbc-pool-dbcp2 ein, um es zu installieren und zu starten.

Beispielausgabe einer Installation mit Oracle-Treiber
virtimo@bpc()> feature:list | grep jdbc
jdbc                            │ 4.2.8            │ x        │ Started     │ enterprise-4.2.8                  │ JDBC service and commands
pax-transx-jdbc                 │ 0.4.4            │          │ Uninstalled │ pax-transx-0.4.4                  │
pax-jdbc-spec                   │ 1.4.4            │          │ Started     │ org.ops4j.pax.jdbc-1.4.4          │ Provides OSGi JDBC Service spec
pax-jdbc                        │ 1.4.4            │          │ Started     │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Service support
pax-jdbc-config                 │ 1.4.4            │ x        │ Started     │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Config support
pax-jdbc-db2                    │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC DB2 DataSourceFactory
pax-jdbc-teradata               │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Teradata DataSourceFactory
pax-jdbc-derby                  │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Derby Embedded DataSourceFactory
pax-jdbc-derbyclient            │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Derby Client DataSourceFactory
pax-jdbc-h2                     │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC H2 DataSourceFactory
pax-jdbc-hsqldb                 │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC HSQLDB DataSourceFactory
pax-jdbc-mariadb                │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Mariadb DataSourceFactory
pax-jdbc-oracle                 │ 1.4.4            │ x        │ Started     │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Oracle DataSourceFactory
pax-jdbc-postgresql             │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC PostgreSQL DataSourceFactory
pax-jdbc-sqlite                 │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC SQLite DataSourceFactory
pax-jdbc-mssql                  │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC MSSQL DataSourceFactory
pax-jdbc-jtds                   │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC jTDS DataSourceFactory
pax-jdbc-pool-dbcp2             │ 1.4.4            │ x        │ Started     │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Pooling DataSourceFactory
pax-jdbc-pool-c3p0              │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Pooling using C3P0
pax-jdbc-pool-hikaricp          │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Pooling DataSourceFactory using Hik
pax-jdbc-pool-aries             │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Pooling DataSourceFactory using Ari
pax-jdbc-pool-narayana          │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Pooling DataSourceFactory using Nar
pax-jdbc-pool-transx            │ 1.4.4            │          │ Uninstalled │ org.ops4j.pax.jdbc-1.4.4          │ Provides JDBC Pooling DataSourceFactory using Pax

Datenbankverbindung steht zur Verfügung?

Die im BPC angelegten Datenverbindungen (siehe Backend Connections) müssen auch von der Karaf-Konsole aus angezeigt werden können. Zur Auflistung verwenden Sie folgendes Kommando: jdbc:ds-list

Beispielausgabe einer Oracle Datenbankverbindung
virtimo@bpc()> jdbc:ds-list
Name         │ Service Id │ Product │ Version                                                                   │ URL                                 │ Status
─────────────┼────────────┼─────────┼───────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────┼───────
oracle-local │ 245        │ Oracle  │ Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production │ jdbc:oracle:thin:@localhost:1521:XE │ OK

Keywords: