Касательно чего ресурс - в web.xml, используемом для?

Я просто задаюсь вопросом, когда/почему Вы определили бы a <resource-ref> элемент в Вашем web.xml файл?

Я думал бы, что это будет определено в Вашей сети/сервере приложений с помощью JNDI и затем искать ссылку JNDI в коде Java?

Ресурс - касательно определения кажется немного избыточным мне, и я не могу думать, когда это могло бы быть полезно. Пример:

<resource-ref>
  <description>Primary database</description>
  <res-ref-name>jdbc/primaryDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>CONTAINER</res-auth>
</resource-ref>
109
задан Basil Bourque 6 October 2019 в 23:16
поделиться

1 ответ

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

вводит еще один уровень косвенности: вы указываете имя, которое хотите использовать в web.xml, и, в зависимости от контейнера, предоставляете привязку в специфичном для контейнера конфигурационном файле.

Итак, вот что происходит: допустим, вы хотите найти имя java:comp/env/jdbc/primaryDB. Контейнер обнаруживает, что в web.xml есть элемент для jdbc/primaryDB, поэтому он обращается к специфической для контейнера конфигурации, которая содержит что-то похожее на следующее:

<resource-ref>
  <res-ref-name>jdbc/primaryDB</res-ref-name>
  <jndi-name>jdbc/PrimaryDBInTheContainer</jndi-name>
</resource-ref>

Наконец, он возвращает объект, зарегистрированный под именем jdbc/PrimaryDBInTheContainer.

Идея заключается в том, что указание ресурсов в web.xml имеет то преимущество, что отделяет роль разработчика от роли развертывателя. Другими словами, как разработчику, вам не нужно знать, как на самом деле называются ваши необходимые ресурсы в производстве, а как человеку, развертывающему приложение, у вас будет хороший список имен для сопоставления с реальными ресурсами.

150
ответ дан 24 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: