можно прочитать Web / Meta-Inf / Context.xml в Tomcat из файла некоторых свойств - PullRequest
6 голосов
/ 18 мая 2009

В моей папке web / meta-inf /, содержащей сведения о подключении к базе данных (пул), есть context.xml. Теперь я хочу, чтобы данные базы данных для моего приложения были предоставлены конечным пользователем в некоторых файлах свойств и context.xml, читая информацию о соединении БД из файла свойств, а не жестко привязывая их непосредственно в файле.

Может ли tomcat заменить заполнители из файла некоторых свойств?

Я читал о менеджере контекста, но не уверен, где это разместить.

Пожалуйста, укажите ваши данные.

Спасибо Абхишек

Ответы [ 5 ]

1 голос
/ 18 января 2013

Вы можете сделать это лучше. В нашем случае у нас были разные базы данных для разных профилей, такие как dev, UAT, pre-prod, поддержка и т. Д.

Итак, что я сделал, я поместил свой context.xml в его расположение по умолчанию <TOMCAT_HOME>/conf.

В конфигурации ресурса context.xml было следующее:

<Resource name="jdbc/someDS" 
          auth="Container"
          type="javax.sql.DataSource" 
          driverClassName="oracle.jdbc.OracleDriver"
          url="${appName.db.url}"
          username="${appName.db.user}"
          password="${appName.db.password}"
          maxActive="30" 
          maxIdle="10"
          defaultAutoCommit="true"
          maxWait="-1"/>

Я создал три сервера Tomcat - server-dev, server-uat, server-support и передал соответствующие значения для каждой базы данных в аргументах vm tomcat в конфигурации сервера tomcat eclipse / intellij (как показано ниже):

-DappName.db.url=jdbc:oracle:thin:@<DB_SERVER>:1521:<SID> -DappName.db.user=DB_USER -appName.db.password=DB_PASSWORD

Преимущество заключается в том, что разработчикам не нужно каждый раз менять базу данных, им просто нужно запустить конкретный сервер. Это было очень удобно и сэкономило много времени при разработке.

0 голосов
/ 26 июня 2010

Если у меня нет информации о соединении с базой данных во время сборки, я просто настрою ссылку на ресурс и сообщу администратору, какое имя им нужно дать для пула соединений. Они могут настроить все в консоли администратора Tomcat, и мне никогда не придется об этом знать. Это также упрощает создание одного файла WAR и его использование в нескольких средах, поскольку сведения о конфигурации базы данных не являются частью WAR.

Смотрите также: Ресурсы JNDI Apache Tomcat 6.0

Если вы знаете детали во время сборки и хотите вставить их в WAR, попробуйте Ant filters .

0 голосов
/ 21 мая 2009

Насколько я понимаю, ваша цель - настроить приложение вне вашей .war, чтобы системный администратор мог настроить систему.

Один из способов добиться этого - не помещать context.xml в ваш файл .war, а распространять этот файл вместе с вашим .war. Затем этот файл должен быть помещен в файл CATALINA_HOME / conf / Catalina / HOSTNAME / APPLICATIONPATH.xml (например, CATALINA_HOME / conf / Catalina / localhost / myapp.xml). Таким образом, информацию о подключении к базе данных можно редактировать непосредственно в файле конфигурации внешнего контекста без изменения файла .war, в этом случае вам не понадобятся заполнители. Это не самый удобный способ для пользователя, так как он / она должен редактировать XML-файл, но это должно быть осуществимо для большинства системных администраторов ...

Более подробную информацию о конфигурации контекста tomcat вы можете найти на tomcat.apache.org/tomcat-5.5-doc/config/context.html

.
0 голосов
/ 30 мая 2009

Я не уверен, что можно загружать детали из файла свойств, но вы можете хранить детали в центральном файле server.xml, а не context.xml. Как только вы достигнете этого, вы, вероятно, сможете экспортировать детали соединения, используя стандартную ссылку на сущность XML.

Вместо того, чтобы помещать детали подключения к вашей базе данных в context.xml, поместите их в server.xml в разделе, а затем добавьте элемент ResourceLink в context.xml, который создает связь между глобальным источником данных и вашим контекстом. .

К сожалению, документация довольно слабая для того, что вы пытаетесь достичь. Следуйте инструкциям в разделе «Определения ресурсов» на этой странице (примерно на полпути вниз) и обратите особое внимание на (крошечный) раздел ResourceLink под ним:

http://tomcat.apache.org/tomcat-5.5-doc/config/globalresources.html

0 голосов
/ 18 мая 2009

Добавление ресурсов JNDI в Context.xml недостаточно. Вам также необходимо определить их использование в WEB-INF / web.xml. Проверьте это шаг за шагом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...