|
|
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Написал веб-сервис на яве. БД - Оракл. Сервер приложений - Oracle App Server 10g. Разворачиваю веб-сервис из EAR-файла при помощи Oracle Enterprise Manager (веб-интерфейс управления сервером). Так вот - не могу подсоединиться к БД, получаю ошибку java.lang.NullPointerException Не могу разобраться с data-sources.xml :( Сам веб-сервис разворачивается нормально и успешно запускается, но когда доходит до обращения к БД - вываливается с ошибкой :( Итак, вот что прописано в классе подключения к БД (нумерация строк в коде отсутствует, естественно): Код: plaintext 1. 2. 3. 4. 5. 6. 7. вот что прописано в data-sources.xml, подключенном к проекту: Код: plaintext 1. 2. 3. Настройки подключения к БД я делаю ручками в Oracle Enterprise Manager (data-sources.xml почему-то автоматом не подцепляется, хотя в проекте он указан и все прекрасно работает на локальной машине на JDeveloper-e) Мне непонятно следующее - чем отличаются строки 2 и 3 и что это за пути прописываются такие - "jdbc/" и "java:comp/env/jdbc/" Доку по классу InitialContext читал, но толком не понял ответ на свой вопрос. Где можно почитать подробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 09:35:27 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Sehensucht! (потерял пароль)Настройки подключения к БД я делаю ручками в Oracle Enterprise Manager (data-sources.xml почему-то автоматом не подцепляется, хотя в проекте он указан и все прекрасно работает на локальной машине на JDeveloper-e)Контейнер перезапустил? Ты уверен, что initialcontext получил? Sehensucht! (потерял пароль)Мне непонятно следующее - чем отличаются строки 2 и 3 и что это за пути прописываются такие - "jdbc/" и "java:comp/env/jdbc/"Это разные пути поиска в JNDI источника данных. Первый вариант, грубо говоря, мы ищем источник по "прямому" имени в конейнере. Второй вариант, это когда мы выполняем поиск, начиная от специального контекста java:comp/env/. Т.е. в данном случае получается, что дерево JNDI начиается на клиенте, и можно через дескриптор application-client.xml прописать отображение имен в JNDI на объекты в контейнере. Словами это сложно объяснить, надо рисовать. Загляни в спецификацию 2.0 по EJB, там были фразы и картинки на тему java:comp/env/. Что EJB, не обращай внимания - это без разницы, что искать в JNDI: объект источника данных или внутренний интерфейс компонента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 10:34:11 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Вот рабочий пример (кажется ничего не забыл): META-INF/data-sources.xml внутри EAR Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ЗЫ Изучайте матчасть и всё у вас получится, удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 11:27:33 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
а обязательно писать "java:comp/env/jdbc/Oracle", можно просто "jdbc/Oracle"? у меня нет доступа к исходникам конфигов, есть только JDeveloper (там могу data-sources.xml редактировать) и Oracle Enterprise Manager (там тоже настройки прописываются). все вроде правильно делаю, а вот цветочек не выходит каменный :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 11:58:15 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
stdioКонтейнер перезапустил? точно, да. stdioТы уверен, что initialcontext получил? нет, не уверен. я слабо представляю, как вывести подробный отчет об ошибках, потому как результатом работы веб-сервиса является XML, и сообщение об ошибке выглядит так: Код: plaintext 1. 2. 3. а вот как я обрабатываю ошибки написано в моем первом посте в строке 6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 12:05:14 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Sehensucht! (потерял пароль)а обязательно писать "java:comp/env/jdbc/Oracle", можно просто "jdbc/Oracle"? на эту часть вопроса ответил уважаемый stdio Sehensucht! (потерял пароль)у меня нет доступа к исходникам конфигов вам стоит прочитать про EJB Roles ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 12:18:04 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
спасибо. ушел читать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 12:21:18 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Sehensucht! (потерял пароль) stdioКонтейнер перезапустил? точно, да. stdioТы уверен, что initialcontext получил? нет, не уверен. я слабо представляю, как вывести подробный отчет об ошибках, потому как результатом работы веб-сервиса является XML, и сообщение об ошибке выглядит так: Код: plaintext 1. 2. 3. а вот как я обрабатываю ошибки написано в моем первом посте в строке 6У меня есть бАльшое подозрение, что _initialContext имеет значение null. И почти уверенн, что ты даже не подсоединился к JNDI через RMI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 12:26:28 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
stdioУ меня есть бАльшое подозрение, что _initialContext имеет значение null. И почти уверенн, что ты даже не подсоединился к JNDI через RMI. так на локальной машине все работает! а при деплое на сервер перестает работать :( я не сильно в веб-сервисах разбираюсь, а уж в администрировании OAS и подавно... вот и пытаюсь понять, чего именно не хватает моему проекту после деплоя на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 13:42:00 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
О!!! Шаманил-шаманил, передеплоил веб-сервис, теперь при обращении к БД получаю такое сообщение: "недействительные аргументы в вызове". В каком именно не уточняется... хотя может имеет смысл логи сервера посмотреть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 14:13:57 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Sehensucht! (потерял пароль) stdioУ меня есть бАльшое подозрение, что _initialContext имеет значение null. И почти уверен, что ты даже не подсоединился к JNDI через RMI. так на локальной машине все работает!Ну и что. Ты поиск начинаешь выполнять в JNDI контейнеров сервера, а не локальной машины. Вопрос №1. Равен ли _initialContext null-у при работе приложения на сервере OracleAS? Да? А веб-сервисы тут вообще не причём ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 14:17:21 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Блин! Совсем запутался... Сделал так Код: plaintext Но знающие люди говорят, что так не совсем правильно писать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 14:51:51 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Sehensucht! (потерял пароль)Блин! Совсем запутался... Сделал так Код: plaintext Но знающие люди говорят, что так не совсем правильно писать... Это явное получение соединения... Без JNDI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:00:21 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
Sehensucht! (потерял пароль)знающие люди говорят И правильно говорят. Доступ к серверу БД открывать на весь мир вы тоже собираетесь ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:01:04 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
на счет открытия БД всему миру - не совсем представляю, как это реализовать... Просто при явном задании соединения в случае изменений адрес БД придется перекомпилировать классы, в то время как при задании адреса через датасорс будет возможность подправить данные в xml-файле без перекомпиляции классов. доклад окончил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:41:52 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
я тоже с JNDI совсем запутался, помогите разобраться плиз. дело в следующем: есть БД, в ней хранимые процедуры(PL/SQL), я в jDeveloper генерирую веб сервис из этой хр процедуры, в визарде выбираю коннекшн к БД (конекш предварительно создан в том же jDevelopere). Затем деплою веб сервис на OAS 10g и тестирую сервис, сервисы выдают ошибку ... вообщем что то про JNDI, как я понимаю сервис пытается найти коннекшн в JNDI сервера приложений, но на сервере я ведь не создавал никакого коннекшена. Правильно ли я понимаю ситуацию? мне нужно создать коннекшн на сервере приложений и задать ему такое же имя в JNDI как и прописанно в сгенеринном сервисе??? просто у меня это как то не укладывается в голове, почему сервисы генерируются таким образом, если они ничего не знают про сервер приложений, почему для коннекта используется JNDI сервера приложений??? или я вообще не в ту степь думаю?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2012, 10:17:48 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
вот ошибка Error doing JNDI lookup on target jdbc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2012, 10:18:48 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
i need help ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2012, 13:13:37 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
kruglikav, В чем именно проблема не подскажу, но расскажу про общий смысл использования JNDI. В Enterprise Java определено много ролей: 1. Server Provider 2. Container Provider 3. Component Developer 4. Assembler 5. Deployer 6. Application Server Administrator Так как Java EE задумывался для создания огромных приложений, то за каждой ролью может стоять не один человек, а целые команды. У роли достаточно четко определены обязанности и даже артефакты которые этой ролью должны создаваться. Во время разработки приложения (Component Developer) может не знать окружение (environment) в котором приложение будет работать. Разработчик использует виртуальные ресурсы, как бы говоря "Для работы моего приложения нужны такие то: roles, jdbc connections, jms queues" и т.п. У каждого приложения есть его виртуальное JNDI дерево (new InitialContext().lookup("java:comp/env/...")). Собственно в этом виртуальном JNDI дереве разработчик все необходимые ресурсы и берет. С другой стороны Application Servet Administrator, настраивает окружение сервера. И здесь он уже реально определяет: группы пользователей, соединения с БД и все остальное. Ну и третья роль это Deployer. Это тот кто во время развертывания приложения производит мапинг виртуальных ресурсов (которые нужны разработчику) на реальные ресурсы (определенные администратором сервера). Обычно это делается в специфических дескрипторах развертывания (sun-web.xml, sun-ejb-jar.xml). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2012, 06:46:56 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
vas0 , спасибо за ваш ответ, хочу еще кое что уточнить авторНу и третья роль это Deployer. Это тот кто во время развертывания приложения производит мапинг виртуальных ресурсов (которые нужны разработчику) на реальные ресурсы (определенные администратором сервера). Обычно это делается в специфических дескрипторах развертывания (sun-web.xml, sun-ejb-jar.xml). вот эта третья роль, это человек делает или это при деплое приложения на сервер должны автоматически создаваться все неоходимые ресурсы , которые прописаны в этих спец дескрипторах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2012, 10:01:58 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
kruglikavvas0 , спасибо за ваш ответ, хочу еще кое что уточнить авторНу и третья роль это Deployer. Это тот кто во время развертывания приложения производит мапинг виртуальных ресурсов (которые нужны разработчику) на реальные ресурсы (определенные администратором сервера). Обычно это делается в специфических дескрипторах развертывания (sun-web.xml, sun-ejb-jar.xml). вот эта третья роль, это человек делает или это при деплое приложения на сервер должны автоматически создаваться все неоходимые ресурсы , которые прописаны в этих спец дескрипторах? За создание ресурсов отвечает администратор сервера приложений. Именно он настраивает все jdbc datasource, securiry realm и все остальное. Последовательность примерно такая (например нужно соединение с БД). 1. Разработчик ведет поиск в виртуальном JNDI дереве Код: java 1. 2. В web.xml виртуальное JNDI дерево описывается. Код: java 1. 2. 3. 4. 3. Администратор сервера для доступа к БД настраивает DataSource. Обычно это делается через административную консоль сервера приложений. 4. Deployer во время развертывая приложения, все виртуальные ресурсы, должен замапить на реальные sun-web.xml. Код: java 1. 2. 3. 4. Все эти мапинги\перемапинги добавляют дополнительную сложность для маленьких проектов. Но представь, если у тебя десяток проектов и сотни человек. Фактически какие задачи решаются: - Администратор занимается управлением ресурсов централизованно. Грубо говоря настроил один раз соединение с БД и все пользуются, а не каждое приложение как-нибудь по своему. - Разработчик не обязан знать окружение в котором приложение будет работать. Грубо говоря разработчик говорит - "Мне нужны, такие то ресурсы", но вопрос откуда все эти ресурсы возьмутся откладывается на потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2012, 13:11:29 |
|
||
|
deploy веб-сервисов и теория по initialContext.lookup() - вопрос
|
|||
|---|---|---|---|
|
#18+
vas0, интересный пост. Действительно, продуктивность и удобство работы (интелиссенс) идёт наверно от 10-ка проектов и выше. А ещё больше от нескольких физических человек-ролей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2012, 13:22:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33034837&tid=2132426]: |
0ms |
get settings: |
13ms |
get forum list: |
25ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
45ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
83ms |
get tp. blocked users: |
3ms |
| others: | 330ms |
| total: | 533ms |

| 0 / 0 |
