Meine CQ5-Anwendung muss sich mit einem externen RDBMS verbinden. Wie konfiguriere ich und stelle eine Verbindung zu einer JDBC-Datenquelle her?
Als Beispiel erstellen wir eine JDBC-Datenquelle, um eine Verbindung mit H2 Datenbank-Engine herzustellen.
Beachten Sie, dass eine leere Zeile am Ende einer JAR-Manifestdatei erforderlich ist.
jar -cfm org.h2.jdbc.driver.extension-1.1.119.jar h2ext.mf
Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.h2.jdbc.driver.extension Bundle-Version: 1.1.119 Fragment-Host: system.bundle; extension:=framework Bundle-Name: H2 JDBC Driver Extension Bundle-Description: Bundle exporting H2 JDBC Driver Export-Package: org.h2
Navigieren Sie zum Konfigurationsmanager in der Felix-Konsole (http://localhost:4502/system/console/configMgr). Erstellen Sie mithilfe der JDBC-Connection-Pool-Konfigurationsfabrik einen neuen Connection Pool. Es könnten zum Beispiel diefolgenden Einstellungen vorliegen.
JDBC driver class: org.h2.Driver JDBC connection URI: jdbc:h2:~/test Usename: sa Password: Validation query: Pool size: 10 Pool wait (msec): 100 Datasource name: h2DataSource
Eine Instanz der Datenquelle aufrufen.
Nachdem die DataSource konfiguriert wurde, wird sie durch Aufrufen der getDataSource(String datasourceName)-Methode des DataSourcePool-Service (com.day.commons.datasource.poolservice.DataSourcePool) ausgelöst und gibt ihm den Datenquellennamen.
In diesem Beispiel erstellen wir einen einfachen OSGi-Service, der zum Abrufen einer Instanz einer Datenquelle verwendet werden kann. Dieses Beispiel ist nicht realistisch, da es im Wesentlichen dieselbe API wie com.day.commons.datasource.poolservice.DataSourcePool selbst aufweist, ohne Funktionen hinzuzufügen. Es zeigt jedoch, wie DataSourcePool in Ihrem eigenen Code verwendet werden kann.
Erstellen wir zunächst eine Schnittstelle für unseren Dienst.
package com.day.test.datasource; import javax.sql.DataSource; public interface DatasourceUtil { public DataSource getDataSource(String dataSourceName); }
Nun die Implementierung. Wie Sie sehen können, trägt dies außer dem Ausblenden der DataSourceNotFoundException keinen Nutzen bei :).
package com.day.test.datasource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.sql.DataSource; import com.day.commons.datasource.poolservice.DataSourceNotFoundException; import com.day.commons.datasource.poolservice.DataSourcePool; /** * * This class is an example if how DataSourcePool can be used to obtain the DataSource. * * @scr.component immediate="true" metatype="no" * @scr.service interface="DatasourceUtil" * @scr.property name="service.description" value="Data Source lookup example" * @scr.property name="service.vendor" value="Day Software" */ public class DatasourceUtilImpl implements DatasourceUtil { private static final Logger log = LoggerFactory.getLogger( DatasourceUtilImpl.class); /** @scr.reference policy="static" */ private DataSourcePool dataSourceService; public DataSource getDataSource(String dataSourceName) { log.info("Using DataSourcePool service lookup " + "to get connection pool " + dataSourceName); DataSource dataSource = null; try { dataSource = (DataSource) dataSourceService.getDataSource( dataSourceName); } catch (DataSourceNotFoundException e) { log.error("Unable to find datasource {}.", dataSourceName, e); } return dataSource; } }
Diese Klasse verwendet die OSGi-Spezifikation für deklarative Dienste, um eine Instanz des DataSourcePool-Dienstes zu erhalten. Diese nennt sie getDataSource(dataSourceName), um die Datenquelle zu erhalten. Maven SCR-Plug-in verwendet die SCR Java-Anmerkungen, um XML-Deskriptoren für deklarative Dienste von OSGi zu erstellen. Die angehängte ZIP-Datei enthält ein Beispiel-POM.
Sie können ein vollständiges Beispiel hier herunterladen: datasourceutil.zip. Es enthält eine Maven-POM zum Erstellen. Um dieses Projekt mit POM zu erstellen, lesen Sie bitte unter "CQ5 als Maven-Repository verwenden" nach.
Dies ist ein CRX-Paket, das ein JSP-Beispiel enthält - datasource-example-jsp.zip. Es ist eine CQ-Komponente, die jeder Seite mit einem Absatzsystem hinzugefügt werden kann. Sie kann zum Testen Ihrer DataSource-Verbindung verwendet werden.
Beigefügt ist ein Beispielbündel zum Aufbau mit CRXDE/CRXDE Lite hinzugefügt, das den Oracle Treiberinstallierer oracle_example_driver.zip enthält, schauen Sie sich die /apps/oracle.In the Activator.java it an, laden Sie explizit die Treiber-Klasse (möglicherweise in zukünftigen Versionen nicht mehr erforderlich). Stellen Sie vor der Verwendung sicher, dass Sie die neueste day.commons.datasource.jdbcpool (1.0.8) installiert haben.
CQ5.2.1, CQ5.3
Herunterladen
Herunterladen
Herunterladen
Herunterladen
Herunterladen
Herunterladen
Herunterladen
Herunterladen
Bei Ihrem Konto anmelden