Укажите имя приложения для Apache TomEE - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно было использовать JPA в автономном приложении, поэтому я нашел пример http://tomee.apache.org/latest/examples/jpa-hibernate.html в качестве стартера.

Они создают контекст EJB через

final Context context = EJBContainer.createEJBContainer(p).getContext();

Тогда есть строка журнала:

INFO - Приложение Enterprise "/ Users / dblevins / examples / jpa-hibernate" загружено

Вам нужно знать имя приложения, чтобы создать строку поиска для поиска:

context.lookup("java:global/jpa-hibernate/Movies");

Что заставляет меня беспокоиться, что я не нашел информации о том, откуда взялась эта часть 'jpa-hibernate'. Он либо исходит из идентификатора артефакта, либо, что еще хуже, из текущего имени каталога, что делает код, использующий его, ужасно зависимым от контекста, который разработчик не контролирует.

Я полностью нашел в Google, как указать это имя приложения, чтобы я мог использовать поиск, который будет работать независимо от того, кто вызывает мой код и где он копируется.

Как мне настроить имя этого приложения?

1 Ответ

1 голос
/ 16 мая 2019

Контейнер Embedded EJB, используемый в этом примере модульного теста, позволяет запускать EJB вне контейнера Java EE. Хорошее введение / учебное пособие можно найти здесь: https://docs.oracle.com/javaee/7/tutorial/ejb-embedded002.htm

Он поддерживает те же файлы конфигурации, что и обычные EJB-jar, а именно поддерживает файл конфигурации ejb-jar.xml (дескриптор развертывания модуля). Там можно настроить имя модуля, например

<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"  
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"  
         version="3.1">  
    <module-name>myapp</module-name>  
</ejb-jar>  

Этот файл должен находиться в каталоге META-INF фляги.

...