Ресурсы JNDI в Tomcat - PullRequest
       38

Ресурсы JNDI в Tomcat

0 голосов
/ 28 июня 2011

В Tomcat похоже, что я должен указать любые ресурсы JNDI как в context.xml, так и в моем web.xml. Это правильно? Есть ли способ обойти это? Я думаю, что одной конфигурации в context.xml будет достаточно. Вот соответствующая документация из руководства пользователя Tomcat .

Обратите внимание, что имя ресурса (здесь, bean / MyBeanFactory должен соответствовать значение, указанное в веб-приложении дескриптор развертывания.

Glassfish не требует настройки таким образом. В Glassfish вы настраиваете ресурсы JNDI (например, пул соединений JDBC) на сервере, и код приложения получает ссылку на ресурс через поиск JNDI. Нет необходимости в дополнительной записи в файле web.xml.

Что меня беспокоит, так это то, что если Glassfish отклонит эту дублированную конфигурацию JNDI, но Tomcat этого потребует, то мне вдруг потребуется поддержка двух файлов web.xml, в зависимости от среды, в которой будет развернуто приложение. Это просто кажется более сложным и громоздким, чем должно быть.

Ответы [ 2 ]

0 голосов
/ 24 мая 2016

Файл context.xml и web.xml - это два способа достичь в основном одного и того же. Первый в Tomcat-специфичный. Второй стандарт является стандартным, определенным спецификацией сервлета и другими спецификациями, связанными с Java EE .

Например, как описано в документе *1009*, вы можете использовать любой из них для передачи параметра инициализации в ваше веб-приложение:

  • <Context> <Parameter>… в файле context.xml
  • <context-param> <param-name>… в файле web.xml

Аналогично, оба могут использоваться для определения ресурсов, которые должны быть доступны через JNDI. Оба могут использоваться для определения слушателей событий жизненного цикла.

Подробности см. В этом вопросе: context.xml против web.xml в веб-приложении

Вам не нужно использовать оба. Однако документация Tomcat рекомендует, чтобы при использовании context.xml вы также повторяли в web.xml. Я не понимаю эту рекомендацию.

Так почему два пути?

  • Стандартный способ полезен, потому что он, ну, стандарт. Вы можете поменять Tomcat на другой контейнер сервлетов , не потрудившись изменить файлы web.xml.
  • Способ, специфичный для Tomcat, полезен, потому что он позволяет вам делать больше, чем вы можете сделать стандартным способом. Например, эта цитата из ресурсов Tomcat 8.0.35 JNDI HOW-TO :

Tomcat предоставляет ряд специфических параметров Tomcat для ресурсов JNDI, которые нельзя указать в web.xml. К ним относится closeMethod, который обеспечивает более быструю очистку ресурсов JNDI при остановке веб-приложения, и singleton, который контролирует, создается ли новый экземпляр ресурса для каждого поиска JNDI. Чтобы использовать эти параметры конфигурации, ресурс должен быть указан в элементе веб-приложения или в элементе $ CATALINA_BASE / conf / server.xml.

0 голосов
/ 28 июня 2011

Glassfish поддерживает все элементы файла web.xml DTD, и resource-env-ref является одним из них, поэтому вам не нужно хранить несколько копий. Glassfish явно выдает ошибку, когда вы ее используете?

...