Конфигурация источника данных для 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, выполните следующие действия:
- Перейдите к директории conf в папке установки Tomcat.
- Создайте резервную копию файла context.xml.
- Откройте файл context.xml в текстовом редакторе.
- Измените информацию в элементе <Resource name> для работы с вашим сайтом. (Примеры были приведены в данном разделе.) Элемент <Resource name> вложен в элемент <Context>.
В <Context> могут быть другие элементы, но помните, что элемент <Resource name> на один уровень ниже элемента <Context> и он не вложен в другие элементы.
- Сохраните и закройте файл context.xml.
- Перезапустить сервер 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>