Глава 14 Использование Connector/J с Tomcat
Следующие инструкции основаны на инструкциях для Tomcat-5.x, доступных по адресу http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html, актуальных на момент написания данного документа.
Сначала установите файл .jar, который поставляется с Connector/J, в $CATALINA_HOME/common/lib, чтобы он был доступен всем приложениям, установленным в контейнере.
Далее, настройте источник данных JNDI, добавив объявление ресурса в $CATALINA_HOME/conf/server.xml в контексте, определяющем ваше веб-приложение:
<Context ....>
...
<Resource name="jdbc/MySQLDB"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/MySQLDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value>SELECT 1</value>
</parameter>
<parameter>
<name>testOnBorrow</name>
<value>true</value>
</parameter>
<parameter>
<name>testWhileIdle</name>
<value>true</value>
</parameter>
<parameter>
<name>timeBetweenEvictionRunsMillis</name>
<value>10000</value>
</parameter>
<parameter>
<name>minEvictableIdleTimeMillis</name>
<value>60000</value>
</parameter>
<parameter>
<name>username</name>
<value>someuser</value>
</parameter>
<parameter>
<name>password</name>
<value>somepass</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/test</value>
</parameter>
</ResourceParams>
</Context>
Connector/J предоставляет возможность вместо использования значения validationQuery SELECT
1 использовать validationQuery со значением, установленным на /*
ping */. Это отправляет запрос пинга на сервер, который затем возвращает фальшивый результат набора данных. Это более лёгкое решение. Оно также имеет преимущество, что при использовании соединений типа ReplicationConnection или LoadBalancedConnection, пинг будет отправлен по всем активным соединениям. Следующий фрагмент XML демонстрирует, как выбрать этот вариант:
<parameter>
<name>validationQuery</name>
<value>/* ping */</value>
</parameter>
Обратите внимание, что /* ping */ необходимо указать точно.
В общем случае, следуйте инструкциям по установке, которые поставляются с вашей версией Tomcat, поскольку способ настройки источников данных в Tomcat со временем меняется, и если вы используете неправильный синтаксис в файле XML, вы, скорее всего, получите исключение, подобное следующему:
Error: java.sql.SQLException: Cannot load JDBC driver class 'null ' SQL
state: null
Обратите внимание, что автоматическая загрузка драйверов, содержащих класс META-INF/service/java.sql.Driver в JDBC 4.0 и более поздних версиях, приводит к некорректной раз установке драйвера Connector/J в Tomcat на Windows. А именно, jar-файл Connector/J остается заблокированным. Это проблема инициализации, не связанная с самим драйвером. Возможные решения, если они приемлемы, следующие: используйте "antiResourceLocking=true" в качестве атрибута контекста Tomcat или удалите директорию META-INF/.
© 2025 Oracle
Licensed under the GPLv2 License.