Запутался в jetty-env.xml

У меня есть веб-приложение, которое использует JNDI для поиска источника данных и диспетчера транзакций. Из документации Jetty я вижу, как это сделать через файл jetty-env.xml. Однако в нем упоминается, что этот файл следует поместить в каталог WEB-INF.

Зачем им предлагать настраивать ресурсы JNDI в файле конфигурации, который находится внутри моей WAR? Это не имеет смысла... Я всегда думал о JNDI как о способе внешней конфигурации. Есть ли другое место, где я могу поместить этот файл на сервер Jetty?

Дополнительный вопрос: как насчет моего модуля Maven WAR... как мне поступить с этим файлом, чтобы я мог использовать плагин Maven jetty для разработки, но не чтобы файл попал в WAR?


person HDave    schedule 12.10.2010    source источник


Ответы (2)


Есть ли другое место, где я могу поместить этот файл на сервер Jetty?

На официальной странице JNDI это выглядит так:

Есть 3 места, в которых вы можете определить элементы именования:

  1. причал.xml
  2. WEB-INF/причал-env.xml
  3. XML-файл контекста

Записи именования, определенные в файле jetty.xml, обычно имеют область действия либо на уровне jvm, либо на уровне сервера. Именование записей в файле jetty-env.xml обычно будет привязано к веб-приложению, в котором находится файл, хотя вы можете ввести области jvm или Server, если хотите, что на самом деле не рекомендуется. В большинстве случаев вы будете определять все записи имен, которые вы хотите видеть для конкретного экземпляра сервера или для jvm в целом, в файле jetty.xml. Записи в XML-файле контекста, как правило, будут ограничены на уровне веб-приложения, к которому они применяются, хотя, опять же, вы можете указать менее строгий уровень области видимости Server или jvm, если хотите.

Используйте jetty.xml для настройки вещей «вне» веб-приложения.

Дополнительный вопрос: как насчет моего модуля Maven WAR... как мне поступить с этим файлом, чтобы я мог использовать плагин Maven jetty для разработки, но не чтобы файл попал в WAR?

Используйте параметр jettyConfig плагина Maven Jetty:

jettyConfig Необязательно. Расположение файла jetty.xml, который будет применяться в дополнение к любым параметрам конфигурации плагина. Вы можете использовать его, если у вас есть другие веб-приложения, обработчики и т. д., которые необходимо развернуть, или у вас есть другие объекты причала, которые нельзя настроить с помощью плагина.

person Pascal Thivent    schedule 12.10.2010
comment
Я принимаю это как ответ, но документация Jetty (docs.codehaus.org/display/ JETTY/jetty.xml), похоже, указывает на то, что файл jetty.xml используется для настройки сервера, а не конкретных веб-приложений. Действительно, он требует, чтобы конфигурации в нескольких XML-файлах использовали один и тот же идентификатор сервера (пример здесь docs.codehaus.org/display/JETTY/Walkthrough+jetty.xml). Но какой идентификатор сервера мне следует использовать, чтобы он правильно работал в контексте Maven? - person HDave; 13.10.2010
comment
Думаю, я понимаю, что мне не нужно помещать новый ресурс JNDI в элемент Configure для сервера, но все равно у меня с этим проблемы. Я создал новый вопрос: stackoverflow .com/questions/3925771/ - person HDave; 13.10.2010
comment
@HDave the Jetty documentation (...) seemed to indicate that jetty.xml is used to configure the server Да, это правильно. - person Pascal Thivent; 13.10.2010
comment
@Pascal. Подводя итог, можно сказать, что файл jetty.xml предназначен для настройки сервера, а файл jetty-env.xml — для настройки веб-приложения. На самом деле файл jetty-env.xml может находиться где угодно, и для целей Maven на него просто нужно ссылаться через свойство конфигурации JettyEnvXML. - person HDave; 14.10.2010
comment
@HDave so to summarize, the jetty.xml file is for configuring the server and jetty-env.xml is for configuring the web-app. d Я думаю, это хорошее резюме. The jetty-env.xml in fact can go anywhere and for the purposes of Maven just needs to be referenced via the JettyEnvXML configuration property Может ли он работать где угодно, если не использует Maven? - person Pascal Thivent; 14.10.2010
comment
@Pascal - я провел небольшое исследование по этому вопросу на случай, если клиент может использовать Jetty в производстве. Я считаю (но не проверял), что вы можете предоставить файл jetty-env.xml в качестве аргумента командной строки, если вы запускаете веб-приложение Jetty через start.jar или jetty-runner.jar. - person HDave; 14.10.2010
comment
@HDave Интересно. На самом деле, тот факт, что плагин maven jetty может это сделать, является намеком на то, что это должно быть возможно. - person Pascal Thivent; 14.10.2010
comment
Итак, как вы решили, что jetty-env.xml не будет развернут в войне, но может использоваться, например, для mavens jetty: запустить цель? - person tObi; 09.03.2015

Jetty-env.xml — это только дополнительная опция для установки параметров JNDI. Чтобы установить параметры JNDI вне WAR, вы можете поместить их в файл jetty.xml.

См. связанный пост здесь и документы Jetty для JNDI.

person vanje    schedule 12.10.2010