Datenquellenkonfiguration für Java, wenn ein Apache Tomcat-Webserver verwendet wird
Eine Datenquelle ist eine benannte Verbindung mit einer Datenbank. Sie müssen eine Datenquelle innerhalb des Webanwendungsservers angeben, um einen Feature-Service auf ArcGIS Spatial Data Server for the Java Platform zu veröffentlichen. Das Datenquellenobjekt wird mit einem Benennungsservice basierend auf der Java Naming and Directory Interface-API (JNDI) konfiguriert.
Nachdem Sie Tomcat installiert und konfiguriert haben, führen Sie die folgenden Schritte aus, um die Verwendung mit ArcGIS Spatial Data Server vorzubereiten:
Legen Sie den JDBC-Treiber im Tomcat-Startverzeichnis ab.
Sie müssen den JDBC-Treiber für Ihr DBMS im Verzeichnis "lib" von " $CATALINA_HOME" ablegen.
Ändern der Tomcat-Datei "context.xml"
Wenn Sie einen Apache Tomcat-Webserver verwenden, müssen Sie die Datenquelle in der Standard-Webkonfigurationsdatei "context.xml" angeben. Bearbeiten Sie "context.xml" wie folgt:
- Navigieren Sie zum Verzeichnis "conf" im Tomcat-Installationsverzeichnis.
- Erstellen Sie eine Sicherungskopie der Datei "context.xml".
- Öffnen Sie die Datei "context.xml" in einem Texteditor.
- Ändern Sie die Informationen im Element <Ressourcenname>, sodass sie für Ihre Site gelten. (Dieses Thema enthält Beispiele.) Das Element <Ressourcenname> ist innerhalb des Elements <Kontext> verschachtelt.
Das Element <Kontext> kann weitere Elemente enthalten; stellen Sie jedoch sicher, dass das Element <Ressourcenname> sich eine Ebene unterhalb des Elements <Kontext> befindet und nicht in einem der anderen Elemente verschachtelt ist.
- Speichern und schließen Sie die Datei "context.xml".
- Starten Sie den Tomcat-Server neu.
Wenn Sie Ihre Datenquelle nicht zur Datei "context.xml" hinzufügen, oder wenn Sie dem Elementattribut <Ressourcennamen> nicht das Präfix jdbc/ voranstellen, erhalten Sie die folgende Fehlermeldung:
Name jdbc is not bound in this Context
Beispiele
Im Folgenden werden Beispiele für Datenquellenkonfigurationen in der Tomcat-Datei "context.xml" für jede der unterstützten Datenbanken aufgeführt. Hier finden Sie Beispiele für zwei Typen von Verbindungspools für jede Datenbank: ein Datenbankverbindungspool (DBCP) und ein JDBC-Verbindungspool.

Der JDBC-Verbindungspool wird von Apache empfohlen. Weitere Informationen und eine Erläuterung der im Element <Ressourcenname> verwendbaren Attribute finden Sie in der Apache Tomcat-Dokumentation.
PostgreSQL
Es folgt ein Beispiel-<Ressourcen>-Element für PostgreSQL, das ein DBCP verwendet. Die mit X markierten Werte bezeichnen Informationen, die für Ihren Standort spezifisch sind und von Ihnen bereitgestellt werden.
<Context> <Resource name="jdbc/X" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://X:X/X" username="X" password="X" maxActive="X" maxIdle="X" maxWait="X"/> </Context>
In diesem Beispiel lautet der Ressourcenname "jdbc/pgservername", und die Datenquelle ist eine PostgreSQL-Datenbank (pgdbname), die auf Port 5432 auf dem Server "pgservername" empfangsbereit ist.
<Context> <Resource name="jdbc/pgservername_pgdbname_pgusername" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://pgservername:5432/pgdbname" username="pgusername" password="pgpassword246" maxActive="20" maxIdle="10" maxWait="-1"/> </Context>
Nachfolgend finden Sie ein Beispiel für die gleiche PostgreSQL-Datenbank, die jedoch einen JDBC-Verbindungspool verwendet:
<Context> <Resource type="javax.sql.DataSource" name="jdbc/pgservername_pgdbname_pgusername" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://pgservername:5432/pgdbname" username="pgusername" password="pgpassword246" initialSize="0" maxActive="80" maxIdle = "30" minIdle="20" timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000" testOnBorrow="true" validationQuery="SELECT 1" validationInterval="30000" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" abandonWhenPercentageFull="60" jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/> </Context>
Oracle
Es folgt ein Beispiel-<Ressourcen>-Element für Oracle. Die mit X markierten Werte bezeichnen Informationen, die für Ihren Standort spezifisch sind und von Ihnen bereitgestellt werden.
<Context> <Resource name="jdbc/X" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@X:X:X" username="X" password="X" maxActive="X" maxIdle="X" maxWait="X"/> </Context>
In diesem Beispiel lautet der Ressourcenname "jdbc/oraservername", und die Datenquelle ist eine Oracle-Datenbank auf dem Server "oraservername", der auf dem Datenbank-Port 1521 empfangsbereit ist. Die Oracle-SID ist "osid". Die Oracle-SID muss vor dem Registrieren der Datenquelle konfiguriert werden.
<Context> <Resource name="jdbc/oraservername_osid_orausername" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@oraservername:1521:osid" username="orausername" password="0rapassword123" maxActive="20" maxIdle="10" maxWait="-1"/> </Context>
Nachfolgend finden Sie ein Beispiel für die gleiche Oracle-Datenbank, die jedoch einen JDBC-Verbindungspool verwendet:
<Context> <Resource type="javax.sql.DataSource" name="jdbc/oraservername_osid_orausername" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@oraservername:1521:osid" username="orausername" password="0rapassword123" initialSize="0" maxActive="80" maxIdle = "30" minIdle="20" timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000" testOnBorrow="true" validationQuery="SELECT 1 FROM DUAL" validationInterval="30000" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" abandonWhenPercentageFull="60" jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/> </Context>
DB2
Es folgt ein Beispiel-<Ressourcen>-Element für DB2. Die mit X markierten Werte bezeichnen Informationen, die für Ihren Standort spezifisch sind und von Ihnen bereitgestellt werden.
<Context> <Resource name="jdbc/X" auth="Container" type="javax.sql.DataSource" driverClassName="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://X:X/X" username="X" password="X" maxActive="X" maxIdle="X" maxWait="X"/> </Context>
In diesem Beispiel lautet der Ressourcenname "jdbc/db2servername", der DB2-Server ist "db2servername", der Datenbank-Port ist 60000, und die katalogisierte Datenbank ist "db2dba".
<Context> <Resource name="jdbc/db2servername_db2dba_db2username" auth="Container" type="javax.sql.DataSource" driverClassName="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://db2servername:60000/db2dba" username="db2username" password="db2password975" maxActive="20" maxIdle="10" maxWait="-1"/> </Context>
Nachfolgend finden Sie ein Beispiel für die gleiche DB2-Datenbank, die jedoch einen JDBC-Verbindungspool verwendet:
<Context> <Resource type="javax.sql.DataSource" name="jdbc/db2servername_db2dba_db2username" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" driverClassName="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://db2servername:60000/db2dba" username="db2username" password="db2password975" initialSize="0" maxActive="80" maxIdle = "30" minIdle="20" timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000" testOnBorrow="true" validationQuery="VALUES 1" validationInterval="30000" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" abandonWhenPercentageFull="60" jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/> </Context>