Tomcat - переместить соединение с базой данных из server.xml - PullRequest
0 голосов
/ 08 июня 2018

Я на tomcat 8 и до сих пор соединение с базой данных (ресурс) настроено в conf/server.xml

<Resource name="jdbc/onejndi"
          auth="Container"
          type="javax.sql.DataSource"
          maxTotal="8"
          maxIdle="30"
          maxWaitMillis="10000"
          username="sa"
          password=""
          driverClassName="org.hsqldb.jdbcDriver"
          url="jdbc:hsqldb:file:c:/.../>

В приложениях META-INF/context.xml у нас есть соответствующая ссылка на ресурс

<ResourceLink name="jdbc/onejndi" global="jdbc/onejndi"
              type="javax.sql.DataSource"/>

Теперь я должен переместить соединение БД из глобального server.xml.Поместить все в приложения META-INF/context.xml проблематично, так как приложение будет запускаться на разных этапах с разными базами данных, и мы не сможем предоставить конкретные сборки для каждого этапа.

Есть идея,намек, ...?

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Теперь я сам нашел решение.

Я помещаю файл context.xml.default внутрь tomcat/conf/catalina/localhost.Структурирован как стандартный context.xml-файл и может содержать теги ресурсов, как в server.xml.

Теперь мне не нужно ни изменять файлы базового tomcat, ни записывать соединения с базой данных в приложениях META-INF /context.xml.

примечание:

  • context.xml.default => доступно для всех приложений
  • myapp.xml => доступно только дляприложение с именем "myapp"
0 голосов
/ 08 июня 2018

Оставьте существующие глобальные server.xml и /MATA-INF/context.xml без изменений, добавьте следующий JNDI в /WEB-INF/web.xml веб-приложения:

<resource-ref>
    <res-ref-name>jdbc/onejndi</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

Затем в кодах своего приложения вы можете получить доступ к БДпул соединений по java:comp/env/jdbc/onejndi.

Это не проблема, поскольку имя JNDI jdbc/onejndi в MATA-INF/context.xml и /WEB-INF/web.xml одинаково для всех сред. Свойства соединения с БД (имя хоста, имя пользователя, пароль и т. д.).) которые различны в каждой среде, могут быть настроены в $CATALINA_BASE/conf/server.xml, который не упакован в WAR.

Это означает, что вы можете создать WAR один раз и развернуть его в разных средах.

...