Конфигурация источника данных для Java при использовании веб-сервера Apache Tomcat

Источник данных представляет собой именованное подключение к базе данных. Чтобы опубликовать сервис объектов в ArcGIS Spatial Data Server for the Java platform, необходимо указать источник данных в сервере веб-приложений. Объект источника данных определяется с помощью сервиса наименований в интерфейсе наименований и каталогов Java Naming and Directory Interface (JNDI) API.

После установки и настройки Tomcat выполните следующие действия для его подготовки к использованию с ArcGIS Spatial Data Server:

Поместите драйвер JDBC в домашней директории Tomcat

Драйвер JDBC для вашей СУБД необходимо поместить в директорию lib $CATALINA_HOME.

Измените файл Tomcat context.xml

Если вы используете веб-сервер Apache Tomcat, вы должны указать источник данных в файле конфигурации по умолчанию, context.xml. Чтобы изменить context.xml, выполните следующие действия:

  1. Перейдите к директории conf в папке установки Tomcat.
  2. Создайте резервную копию файла context.xml.
  3. Откройте файл context.xml в текстовом редакторе.
  4. Измените информацию в элементе <Resource name> для работы с вашим сайтом. (Примеры были приведены в данном разделе.) Элемент <Resource name> вложен в элемент <Context>.

    В <Context> могут быть другие элементы, но помните, что элемент <Resource name> на один уровень ниже элемента <Context> и он не вложен в другие элементы.

  5. Сохраните и закройте файл context.xml.
  6. Перезапустить сервер Tomcat.

Если ваш источник данных не добавлен в файл context.xml file, или перед атрибутом элемента <Resource name> не стоит jdbc/, вы получите следующее сообщение об ошибке:

Name jdbc is not bound in this Context

Примеры

Ниже приведены примеры конфигурации источника данных в файле Tomcat context.xml для каждой из поддерживаемых баз данных. Для каждой базы данных приведены примеры двух типов пулов подключений: пула подключений базы данных (DBCP) и пула подключений JDBC.

ПримечаниеПримечание:

Apache рекомендует использовать пул подключений JDBC. Более подробно об этом и о атрибутах элемента <Resource name> см. в документации Apache Tomcat.

PostgreSQL

Ниже приведен пример элемента <Resource> для базы данных PostgreSQL, использующей DBCP. Значение, обозначенные символами X, указывают информацию, относящуюся к вашему сайту.

<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>

В этом примере ресурс называется jdbc/pgservername, а источником данных является база данных PostgreSQL (pgdbname), использующая порт 5432, на сервере pgservername.

<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>

В следующем примере показана та же база данных PostgreSQL, но использующая пул подключений JDBC:

<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

Ниже приведен пример элемента <Resource> для Oracle. Значение, обозначенные символами X, указывают информацию, относящуюся к вашему сайту.

<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>

В этом примере ресурс называется jdbc/oraservername, а источником данных является база данных Oracle на сервере oraservername, использующая порт базы данных 1521. Идентификатором Oracle SID является osid. До регистрации источника данных нужно настроить Oracle SID.

<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>

В следующем примере показана та же база данных Oracle, но использующая пул подключений JDBC:

<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

Ниже приведен пример элемента <Resource> для DB2. Значение, обозначенные символами X, указывают информацию, относящуюся к вашему сайту.

<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>

В этом примере имя ресурса – jdbc/db2servername, сервер DB2 – db2servername, порт базы данных – 60000, база данных в каталоге – 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>

В следующем примере показана та же база данных DB2, но использующая пул подключений JDBC:

<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>

9/11/2013