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. In der Regel wird das Datenquellenobjekt 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:

  1. Navigieren Sie zum Verzeichnis "conf" im Tomcat-Installationsverzeichnis.
  2. Erstellen Sie eine Sicherungskopie der Datei "context.xml".
  3. Öffnen Sie die Datei "context.xml" in einem Texteditor.
  4. Ä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.

  5. Speichern und schließen Sie die Datei "context.xml".
  6. 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 das Konfigurieren einer Datenquelle 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.

TippTipp:

Wenn Sie mehrere Datenquellen konfigurieren, verwenden Sie Datenquellennamen, die die Eigenschaften der Datenquelle widerspiegeln. Sie können beispielsweise die Server-, Datenbank- und Benutzernamen in den Datenquellennamen einschließen. Hierdurch wird die Identifizierung der Datenquellen vereinfacht und die Eigenschaften müssen nicht in den Serverdateien oder -Konsolen der Webanwendung gesucht werden.

PostgreSQL

Es folgt ein Beispiel-<Ressourcen>-Element für PostgreSQL, das ein DBCP verwendet. Die mit X markierten Werte bezeichnen Informationen, die für Ihre Site 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 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="20"
               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 Ihre Site 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 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="20"
              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 Ihre Site 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 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="20"
              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>

Verwandte Themen

9/12/2013