OC4J 10.1.3.4 проблема с развертыванием нескольких EJBS 2.1

StackOverflow https://stackoverflow.com/questions/141733

Вопрос

У меня возникли проблемы с переходом с OC4J 10.1.2.3 на 10.1.3.1.4.Проблема заключается в приложениях, которые имеют несколько EJB (все версии 2.1, без EJB 3.0).Jdeveloper примет значение по умолчанию ejb-jar.xml (то, которое требуется Jdeveloper для запуска на своем автономном экземпляре OC4J) и упакует его в каждый модуль EJB JAR, НЕСМОТРЯ НИ НА что.Это приводит к тому, что сервер приложений просматривает каждый модуль EJB JAR при развертывании и находит один и тот же ejb-jar.xml файл N раз (где N = количество модулей EJB).Это приводит к дублированию ссылок EJB и прерывает любые поисковые запросы JNDI, такие как:"java:comp/env/ejb/EJBName".Таким образом, развертывание приложения, имеющего 3 EJB, EJB1, EJB2 и EJB3, приводит к тому, что сервер приложений регистрирует 9 EJB вместо 3. Мне нужен метод наилучшей практики, но между тем, как действуют 10.1.3.4 и JDeveloper, ситуация довольно тяжелая...

Боковое примечание:Они будут работать, если поисковый код JNDI веб-приложения будет преобразован просто в "ejb / EJBName".Однако это нежелательно.

Это было полезно?

Решение 2

Проблема заключалась в множественных ссылках в наших профилях развертывания.Мы создавали профиль развертывания для КАЖДОГО EJB.Это означало, что у каждого EJB был свой собственный ejb-jar.xml (этот файл содержал описание всех EJB в проекте).Следовательно, каждый раз, когда JDeveloper создавал EJB, он помещал дескриптор всех EJB в каждый сгенерированный им EJB, вызывая количество ссылок NxN.Следовательно, Nx (N-1) дополнительных ссылок.

Теперь ключевым моментом является то, что Oracle Application Server 10.1.2.3.0 и ниже не заботились об этих повторяющихся ссылках.Однако, как мы можем видеть, 10.1.3.1.4 - это сильно отличающаяся версия, и это действительно сломалось.

Наше решение:иметь только 1 профиль развертывания EJB, содержащий все классы EJB и POJO, которые они используют.Помните, раньше для каждого EJB был 1 профиль EJB...Все, что это позволило Jdeveloper (что, ИМХО, дерьмово) правильно создайте действительный EAR.Причиной этого стало сочетание Jdeveloper и дерьма Сервера приложений Oracle.

Другие советы

Вам следует ознакомиться с документацией Oracle, чтобы понять, в каком случае это ваш случай.Хорошим началом является руководство разработчика Oracle® Containers for J2EE Enterprise JavaBeans В соответствии с руководством Oracle® Containers for J2EE Services, глава 2:Использование JNDI когда вы используете форму "ejb/EJBName", вы выполняете "локальный" поиск.Если вы хотите использовать полную форму, вы должны проверить раздел "Включение глобального поиска JNDI" главы "Использование JNDI".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top