Согласно EJB Справочник по именованию JNDI, имя поиска JNDI для сессионного компонента имеет следующий синтаксис:
ejb:<appName>/<moduleName>/<distinctName>/<beanName>!<viewClassName>?stateful
Поэтому желаемого можно добиться двумя способами:
- Измените имя ваших файлов поставки (WAR и EAR)
Чтобы удалить версию из WAR, вы можете просто сделать следующее в POM WAR:
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
</plugins>
</build>
Что касается вашего EAR, чтобы удалить из него версию, вы можете поместить следующее в POM вашего EAR:
<build>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
(...)
<finalName>${project.artifactId}</finalName>
(...)
</configuration>
</plugin>
</plugins>
</build>
С приведенной выше конфигурацией у вас будет что-то вроде:
.../TestGroup-ear/TestGroup-war/...
- Используйте файлы ejb-jar.xml и application.xml.
Создайте файл ejb-jar.xml с приведенным ниже содержимым и поместите его в папку src/main/webapp/WEB-INF файла WAR:
<ejb-jar xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"
version="3.2">
<module-name>someModuleName</module-name>
</ejb-jar>
После этого поместите файл application.xml в папку src/main/resources/META-INF EAR со следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"
version="7">
<application-name>someApplicationName</application-name>
</<module>
<web>
<web-uri>TestGroup-war-${project.version}.war</web-uri>
<context-root>testGroup</context-root>
</web>
</module>
</application>
Затем на вашем JNDI у вас будет что-то вроде:
java:global/someApplicationName/someModuleName/TestService!org.pkg.ejb.local.CRMDataServiceLocal
java:app/someModuleName/TestService!org.pkg.ejb.local.CRMDataServiceLocal
java:module/TestService!org.pkg.ejb.local.CRMDataServiceLocal
java:global/someApplicationName/someModuleName/TestService
java:app/someModuleName/TestService
java:module/TestService
ОБНОВИТЬ
Начиная с версии 2.5, подключаемый модуль Maven EAR имеет параметр no-version
, для которого можно установить значение свойства fileNameMapping
, чтобы исключить версию из вашего артефакта:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
(...)
<fileNameMapping>no-version</fileNameMapping>
(...)
</configuration>
</plugin>
person
aribeiro
schedule
23.03.2016