powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Для чего определение resource-ref в web.xml?
14 сообщений из 14, страница 1 из 1
Для чего определение resource-ref в web.xml?
    #38330538
Exiart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При разработке web-приложений в web.xml описан следующим образом:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD
  Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>

<web-app>
     ....
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/testDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

</web-app>



Контейнером сервлетов у меня является Tomcat 6. В нем (context.xml) описан ресурс БД:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Resource name="jdbc/testDS" 
	auth="Container"
    type="javax.sql.DataSource" 
    driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://localhost:5432/test"
    username="postgres" 
    password="postgres"
    maxActive="20" 
    maxIdle="10" 
    maxWait="-1"/>



Соответственно, в приложении соединение я получаю через DataSource по JNDI:
Код: java
1.
2.
Context ctx = new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/testDS");



Вопрос такой: зачем вообще необходимо определение resource-ref в web.xml, если и без него всё успешно работает.
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38330892
carper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Exiart,

http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html :

"If a resource has been defined in a <Context> element it is not necessary for that resource to be defined in /WEB-INF/web.xml. However, it is recommended to keep the entry in /WEB-INF/web.xml to document the resource requirements for the web application.

Проще говоря, такое описание стандарт, а возможность обойтись без его соблюдения, дает специфическая особенность Tomcat.
Причем, я не нашел, что это гарантируется в будущих версиях.
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38331223
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exiart,

Суть в том, что когда создаешь web\ejb приложение, то ты не обязательно знаешь среду (environment) в котором это приложение будтет работать.

В web.xml разработчик опысывает виртуальное jndi дерево. Описывая что для работы его приложения нужны такие ресурсы (например datasource, jms очереди и т.п.).

С другой стороны администратор сервера приложений, настраивает реальные ресурсы (пулы соодинений и все остальное).

Есть еще роль Deployer. При развертывании приложения, этот человек ставит соотвествие между тем что нужно разработчику и тем что реально сконфигурировано на сервере.

Вообще в Java EE определено много ролей, и за ролью можут стоять разные люди и даже целые команды. Compontent Developer, Application Assembler, Deployer, Server Administrator (лишь некоторые). И все они работают независимо, дескрипторы развертывания web.xml, <provider>-web.xml это их способ друг с другом договориться.

Соотвественно по твоему примеру:
context.xml - это отвественность Server Administrator
web.xml - это отвественность Application Assembler

Deployer-ру ничего маппить не нужно, так как конфигурация с обоих сторон совпала.
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38331885
Exiart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vas0,

Я в роли девелопера работая у себя в тестовой среде задал такие установки, какие я привел в своём вопросе. После отладки приложения я отдаю его (war-файл) другому челу, который должен задеплоить приложение в продакшене. Но в продакшене (тоже допустим Tomcat) следующие установки:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Resource name="jdbc/productionDS" 
	auth="Container"
    type="javax.sql.DataSource" 
    driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://localhost:5432/production"
    username="postgres" 
    password="postgres"
    maxActive="20" 
    maxIdle="10" 
    maxWait="-1"/>



Тогда имеем проблему, ибо resource-ref в web.xml моего приложения обращается к jdbc/testDS ресурсу контейнера, которого в продакшене нету. Что может сделать чел, которому я отдал приложение? Отредактировать web.xml. Ну а код кто будет редактировать? Вроде как в других серверах (JBoss, например) существует ещё маппинг, который можно редактировать в таких случаях и всё ок, но для томката я такого не нашёл. Или я не так вас понял?
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38331889
Exiart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
..... продолжу. Ну или админ сервера должен менять имя ресурса у себя в context.xml. А правильный ли такой подход? Мало ли кем ресурс ещё используется.
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38332029
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exiart,

Насколько я знаю в tomcat специфических дескрипторов развертывания нет. Поэтому да будет проблема. Тут фактически разработчик влияет на администратора веб сервера. Но других вариантов настройки сервера в tomcat нет (насколько я знаю).

Я как бы общий подход хотел продемострировать. В серверах приложений glassfish, weblogic, jboss mapping делается через специфический дескриптор развертывания. И фактически за разработку, администрирование сервера, и развертывание приложения могут разные люди отвечать.
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38332180
Exiart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vas0,

Ну тогда всё понятно, спасибо за подробное объяснение
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Для чего определение resource-ref в web.xml?
    #38918858
Grglgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vas0,
Если Вы сообщите мне, как прописать ConnectionFactory (для jdbc-коннектов) в JNDI, буду Вам очень признателен.
Поскольку:
Имею еарку, внутри нее рарку с адаптером, в ней META-INF, в ней
ra.xml:
----------------------
... все как обычно в ra.xml ...
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<connector>
<display-name>My Adapter</display-name>
<vendor-name>Me</vendor-name>
<spec-version>1.0</spec-version>
<eis-type>My Database</eis-type>
<version>1.0</version>
<resourceadapter>
<managedconnectionfactory-class>ru.me.core.resource.spi.local.LocalManagedConnectionFactory</managedconnectionfactory-class>
<connectionfactory-interface>ru.me.core.resource.ConnectionFactory</connectionfactory-interface>
<connectionfactory-impl-class>ru.me.core.resource.spi.ConnectionFactoryImpl</connectionfactory-impl-class>
<connection-interface>java.sql.Connection</connection-interface>
<connection-impl-class>ru.me.core.resource.spi.ConnectionHandle</connection-impl-class>
<transaction-support>LocalTransaction</transaction-support>


...
-----------------------

и weblogic-ra.xml:
--------------------------
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="UTF-8"?>

<weblogic-connector xmlns="http://www.bea.com/ns/weblogic/90">
<outbound-resource-adapter>
<connection-definition-group>
<connection-factory-interface>ru.me.core.resource.ConnectionFactory</connection-factory-interface>
<connection-instance>

<!-- УКАЗЫВАЮ ИМЯ ДЛЯ JNDI -->	
<jndi-name>java:jca/ME</jndi-name>

<connection-properties>
<pool-params>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
</pool-params>
<properties>
<property>
<name>lowLevelLoginConfiguration</name>
<value>me3t-data-source</value>
</property>


... далее все теги закрываются...
---------------------------------

Все деплоится на WebLogic нормально.

Но когда выполняется код:
Код: java
1.
ds = context.lookup("java:jca/ME");


то вылетает
javax.naming.NameNotFoundException: While trying to look up /jca/ME in /app/ejb/core.jar#SpecialDateSession.; remaining name '/jca/ME'
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38919034
Grglgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уточню, что вызов


Код: java
1.
ds = context.lookup("java:jca/ME");



происходит из ejb, находящегося в ejb-jar
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38919153
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grglgn,

Можно попробовать

<jndi-name>jca/ME</jndi-name>

ну или уж
<jndi-name>java:comp/env/jca/ME</jndi-name>

Но в WL предпочитают что-то типа
weblogic.jndi.jca.ME
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38919313
Grglgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньев,

попробовал
<jndi-name>java:comp/env/jca/ME</jndi-name>

та же ошибка.
Но вообще то я думал, что это имя может быть любым - какое пропишу в конфигах, по такому и могу в коде искать в JNDI.
Насколько я понимаю, я не во всех конфигах, которых нужно это прописал, а в каких нужно - не знаю
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38919316
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grglgn,

Вопрос откуда он начнет искать. :)
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38919773
Grglgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньев,
может надо InitialContext с какими-то особыми параметрами создавать?
я сейчас по умолчанию создаю new InitialContext()
...
Рейтинг: 0 / 0
Для чего определение resource-ref в web.xml?
    #38919806
Grglgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура!!!!! Заработало с weblogic.jndi.jca.ME !!!
Сергей, большое спасибо! Ни в жизнь не догадался бы!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Для чего определение resource-ref в web.xml?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]