Пул соединений Tomcat в WEB-INF / context.xml или TOMCAT_HOME / conf / server.xml?

1

Это первый раз, когда я пытаюсь настроить пул соединений в tomcat (версия 8), и я немного смущен. Кажется, у меня есть 2 варианта для меня: 1) я могу добавить что-то похожее на это:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- Specify a JDBC datasource for oracle -->
    <Resource name="jdbc/testdb" 
              auth="Container"
              type="javax.sql.DataSource" 
              username="DB_USERNAME" 
              password="DB_PASSWORD"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@xxx:1525:dbname"
              maxActive="10" 
              maxIdle="4" />
</Context>

В файле под названием "context.xml" в моих проектах папка WEB-INF. ИЛИ, 2) Я могу добавить что-то вроде этого:

<Context path="/dbcp" docBase="dbcp" debug="5"
reloadable="true" crossContext="true">

<Resource name="jdbc/TestDB" auth="Container"
   type="javax.sql.DataSource" removeAbandoned="true"
   removeAbandonedTimeout="30" maxActive="100"
   maxIdle="30" maxWait="10000" username="kunal"
   password="java_facier"
   driverClassName="com.mysql.jdbc.Driver"
   url="jdbc:mysql://localhost/dbcptest"/>

</Context>

в TOMCAT_HOME/conf/sever.xml, а затем добавьте следующее:

<resource-ref>
    <description> DB Connection Pooling</description>
    <res-ref-name> jdbc/TestDB</res-ref-name>
    <res-type> javax.sql.DataSource</res-type>
    <res-auth> Container</res-auth>
</resource-ref>

к моему файлу WEB-INF/web.xml в моем проекте...

Если я прав в обоих случаях здесь, какой из них лучше использовать? Также, где бы я поместил своих поставщиков jdbc-драйверов баз данных?

  • 1
    Если будет использоваться только одно веб-приложение, я не могу понять, почему вы захотите поместить его в server.xml. Чем меньше вы возитесь с этим, тем лучше.
  • 0
    Спасибо @ScaryWombat, это имеет смысл. Куда бы я тогда положил JDBC-драйвер моего поставщика БД? Если я использую Maven, я мог бы просто указать это в моем pom.xml?
Показать ещё 1 комментарий
Теги:
tomcat
connection-pooling

2 ответа

6
Лучший ответ

Поместите библиотеки JDBC в папку $ tomcat/lib, чтобы перезагрузка webapp не касалась ее. Я нашел это наиболее распространенным правилом, и даже официальная документация Apache Tomcat сообщает папке $ CATALINA_HOME/lib, поэтому, пожалуйста, следуйте их мудрости.

$ кот /WebApps/mywebapp/META-INF/context.xml
Это дает вам пул уровней приложений. У вас есть два или более webapps, подключающихся к одной базе данных, каждый из которых имеет собственный пул. Это означает, что они имеют собственный личный максимальный лимит и такие счетчики. Распространение и установка файла mywebapp.war легко, это автономное приложение.

$ кот/конф/server.xml
Это обеспечивает глобальный пул, в котором два или более webapps используют один и тот же максимальный лимит и такие счетчики. Если вы должны контролировать общее количество подключений, открытых для движка db, вам нужно установить параметры jdbc. Администратор Tomcat должен установить этот параметр перед развертыванием webapp.

edit: О, я вижу, вы установили jdbc-настройки внутри элемента <Context> в файле server.xml. Ну, в этом случае я думаю, что это все еще веб-пул-частный пул. Если вам нужен глобальный пул, вы добавляете его внутри элемента <GlobalNamingResources> в верхней части xml файла.

  • 0
    Я не чувствую себя религиозным по этому поводу, но я предпочитаю WEB-INF / lib, так как я часто забываю развертывать jar-файлы в $ tomcat / lib, а также иногда сталкиваюсь с проблемами версий, если diff webapps использует diff-версию DB
  • 0
    @ Дома, кристально чистое объяснение. Спасибо!
1

У любого подхода есть плюсы и минусы:
1. Упаковка уровня приложения создает локальные пулы соединений приложений.
2. Независимо от настройки Tomcat
но приложение для выпуска требует релизов, специфичных для среды.

Хотя, если tomcat поддерживает пул соединений, то приложение зависит только от "Зарегистрированного имени", а один пакет может быть распределен для всех сред.

Подводя итог, упаковка на уровне приложений ориентирована на разработчиков, тогда как пулы соединений, поддерживаемые Tomcat, являются операционными.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню