Spec-Zone .ru
спецификации, руководства, описания, API

22.3.11. Используя 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 так, чтобы это было доступно всем приложениям, установленным в контейнере.

Затем, сконфигурируйте DataSource 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.jdbc.Driver</value>    </parameter>    <parameter>      <name>url</name>      <value>jdbc:mysql://localhost:3306/test</value>    </parameter>  </ResourceParams></Context>

Отметьте, что Connector/J 5.1.3 представлял средство посредством чего, вместо того, чтобы использовать a validationQuery значение SELECT 1, возможно использовать validationQuery с набором значений к /* ping */. Это отправляет ping серверу, который тогда возвращает поддельный набор результатов. Это - более легкое решение для веса. У этого также есть преимущество это, используя ReplicationConnection или LoadBalancedConnection введите соединения, ping будет отправлен через все активные соединения. Следующий отрывок XML иллюстрирует, как выбрать эту опцию:

<parameter> <name>validationQuery</name> <value>/* ping */</value></parameter>

Отметьте это /* ping */ должен быть определен точно.

Вообще, следуйте за инструкциями по установке, которые идут с Вашей версией Tomcat, как способ, которым Вы конфигурируете источники данных в изменениях Tomcat время от времени, и если Вы используете неправильный синтаксис в своем XML-файле, Вы наиболее вероятно закончите с исключением, подобным следующему:

Error: java.sql.SQLException: Cannot load JDBC driver class 'null ' SQLstate: null 

Отметьте что автозагрузка драйверов, имеющих META-INF/service/java.sql.Driver class в JDBC 4.0 причины неподходящее неразвертывание драйвера Connector/J в Tomcat на Windows. А именно, фляга Connector/J остается заблокированной. Это - проблема инициализации, которая не связывается с драйвером. Возможные обходные решения, если жизнеспособный, следующие: используйте"antiResourceLocking=true"как атрибут Контекста Tomcat, или удаляют META-INF/ каталог.