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:
- 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 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.
Tipp: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>