Использование <resource-ref> в Web.xml с Tomcat 5.5 и Spring - PullRequest
1 голос
/ 31 января 2012

Я делаю поиск Jndi, используя <jee:jndi-lookup>.Все работает нормально, но в соответствии с ресурсом Jndi ссылка на сайте Tomcat нам нужен <resource-ref> в Web.xml.Я не могу понять, зачем нам это нужно.Все работает нормально, если у меня есть context.xml в папке conf без определений web.xml.

Мой вопрос заключается в том, требуется ли <resource-ref> только тогда, когда мы ищем Jndi через простой Java-код (InitialContext().lookup("..."))и не через Spring. Я не уверен, нужно ли нам это здесь также.

Я видел обсуждение этого на Для чего используется resource-ref в web.xml? , но для конфигурацииниже

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

не работает, как указано, когда я использую его в файле web.xml приложения (под WEB-INF).Я думаю, что это специфично для JBoss web.xml.Пожалуйста, помогите мне понять.

1 Ответ

4 голосов
/ 31 января 2012

Spring - это простой Java-код.Это не чёрная магия.

Использование resource-ref является хорошей практикой, поскольку позволяет использовать имя, локальное для веб-приложения, вместо использования глобального имени, общего для всех веб-приложений в контейнере.

Предположим, что вы хотите развернуть две разные версии одного и того же приложения в одном и том же контейнере, и обе используют одно и то же глобальное имя JNDI.Теперь они вынуждены использовать одну и ту же базу данных, что неправильно.Принимая во внимание, что если вы используете локальное имя, объявленное в файле web.xml, вы можете связать каждую версию с ее собственным глобальным именем, и, таким образом, обе версии используют две разные базы данных.

То же самое происходит, если вы развертываете двесовершенно разные приложения, и оба случайно используют одно и то же глобальное имя jdbc/OracleDS.

...