RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 12. 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 DataSource, добавляя декларацию ресурса к $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. А именно, Connector/J jar остается блокированным. Это проблема инициализации, которая не связана с драйвером. Возможные обходы следующие: используйте "antiResourceLocking=true" как атрибут контекста Tomcat или удалите каталог META-INF/.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru