В EJB 3.1 JNDI-поиск может быть выполнен с разными Lookup-именами:
java:global[/<app-name>]/<module-name>/<bean-name>!<fully-qualifiedbean interface-name>
java:global[/<app-name>]/<module-name>/<bean-name>
java:app/<module-name>/<bean-name>!<fully-qualified-bean-interface-name>
java:app/<module-name>/<bean-name>
java:module/<bean-name>!<fully-qualified-bean-interface-name>
java:module/<bean-name>
В моем проекте JavaEE 6 (с Maven 2, Netbeans 6 и Glassfish v3) имя приложения - X-Snapshot.ear, а EJB-модуль - Y-Snapshot.jar. Как я могу настроить этот проект Maven для использования другого приложения и имени модуля? Я не хочу менять все поиски JNDI, когда меняются эти имена !! Так можно ли настроить имена приложений и модулей для JNDI LookUps?
Maven EAR Plugin позволяет Customize A Module Filename и вы можете задать окончательное имя EAR, используя project.build.finalName
.
Переопределить
и
в application.xml
и ejb-jar.xml
соответственно. Цитирую Portable Global JNDI name in EJB 3.1:
В дополнение к вышеуказанному имени, если EJB раскрывает только одно клиентское представление (то есть он реализует только один интерфейс или представление без интерфейса), контейнер также обязан отобразить боба в
java:global/[<имя приложения>]/<имя модуля>/<имя боба>
где
<имя приложения>
по умолчанию означает имя пакета (имя файла.ear
) без расширения. расширения пакета. Это можно переопределить вapplication.xml
. Также,<имя приложения>
применяется только в том случае, если боб упакован в пакет.ear
файла.<Имя модуля>
по умолчанию означает имя пакета (.war
или.jar
) без расширения расширения bundle. Опять же, это можно переопределить вejb-jar.xml
.По умолчанию используется неквалифицированное имя класса боба. Однако, если
@Stateful
или@Stateless
или@Singleton
используется атрибут атрибут name, то значение указанное там, будет использоваться в качестве имя боба.