![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Alexis |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
Мучаю потихоньку EJB3. Чувствую, что ошибка совсем глупая, но все же разобраться самостоятельно не могу.
Если слегка упростить мое творчество, то получается, что имеется класс модели User, есть Stateless бин с методом добавления пользователя:
И сервлет
Собираются два JAR: ejb, модель и war-файл с сервлетом. Пакуется EAR и деплоится на JBoss 5.0 GA. При вызове сервлета выкидывается ошибка:
и так далее в том же духе. Самое интересное, что так ругается он только на мою модель. Если, к примеру, передавать String с именем пользователя, а объект создавать в бине и сохранять, то все отлично работает. Чем ему не нравятся классы моей модели, когда их передают бинам, я ума ни приложу. |
||||||||
|
|||||||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
А что если интерфейс Users пометить как @Local ?
|
|||
|
||||
| Alexis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
Без изменений, ошибка та же. |
|||
|
||||
| chand0s |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 19.2.2007 Репутация: 1 Всего: 3 |
1) Насколько я помню EJB спеку - если пометок @Local, @Remote нет - интерфейс считается локальным.
2) Если один интерфейс загружен двумя класслоадерами - это два разных интерфейса По моему у вас здесь именно это и произошло - jboss грузит бин (и интерфейс Users) одним класслоадером, а tomcat - другим, поэтому у вас эти "имплементации" интерфейса несовместимы. Поковыряйтесь в доке jboss'а, поищите как можно заставить tomcat использовать класслоадер jboss-овского deployer'а |
|||
|
||||
| Alexis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
Судя по всему дело не в этом. Пробовал менять загрузчик для web-приложений как описано в http://www.jboss.org/community/docs/DOC-9288 не помогло. Как ни странно, все работает, если интерфейс пометить @Remote |
|||
|
||||
| chand0s |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 19.2.2007 Репутация: 1 Всего: 3 |
Вообще это не странно. Подумайте сами, что происходит внутри сервера: 1) Интерфейс локальный. JBoss делает так:
2) Интерфейс удаленный. Происходит примерно вот что:
|
|||
|
||||
| ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
Alexis, у вас классы модели находятся только в отдельном jar'е? В war'е их нету?
Обычно и классы модели и Enterprise бины упаковываются в один jar. В манифесте war'а (/META-INF/MANIFEST.MF) прописывается ссылка на <ejb>.jar (строка Class-Path: <ejb>.jar) Ну и в application.xml ear'а должны быть определены оба модуля. <ejb>.jar - имя jar файла с классами модели и Enterprise бинами. Современные IDE делают это автоматом, либо при сборке проекта, либо при создании(настройке) проектов. Если вы выносите классы модели в отдельный jar, то соответствующие ссылки должны быть прописаны в манифестах и <ejb>.jar и war файлов. |
|||
|
||||
| Alexis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 14.8.2006 Где: Казань Репутация: 5 Всего: 5 |
Действительно, установил в pom.xml зависимостям ejb и модели scope равным provided. Как результат, JAR файлы не копируются в создаваемый WAR-архив. Т. е. фактически получается следующая структура:
До этого EJB лежали в WAR-файле, что и вызавало проблему, которую подробно описал chand0s. chand0s, спасибо за терпение и подробное объяснение! ivg, спасибо за наводку на простой путь решения! Поставил плюсы. Это сообщение отредактировал(а) Alexis - 19.2.2009, 18:49 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |