Как решить проблему с именем jndi в модульных тестах? - PullRequest
1 голос
/ 19 января 2011

Я использую javaee6 / ejb3.1 api со встроенным сервером Glassfish.моя структура приложения представляет собой модуль ejbs контроллера пользовательского интерфейса вызывает bj-контроллер ejbs.с глобальным форматом имени jndi является java: global / myapp / mymodule / myejb.

Но когда я пытаюсь выполнить модульное тестирование обоих модулей без упаковки приложения на встроенном сервере;получить другое имя приложения для jndi, которое связано с временной папкой ...

Пожалуйста, найдите здесь консольный журнал ..

Сгенерированные имена jndi похожи на .. java:global/ejb-app1138741107347091524/controllers/ArticleService при каждом запускетест

java:global/ejb-appXXXXXXXXXXXXXXXXXX/controllers/ArticleService

XXXXXXXX в имени ejb-приложения в имени jndi изменяется ...

    FINE: [Application] -C:-DOCUME~1-daunddig-LOCALS~1-Temp-ejb-app1138741107347091524- , uid: 84898074169442304
Jan 19, 2011 6:26:46 PM com.sun.enterprise.deployment.Application setUniqueId
FINE: Ejb  classes.jar:ArticleFacadeImpl id = 84898074169442304
Jan 19, 2011 6:26:46 PM com.sun.enterprise.deployment.Application setUniqueId
FINE: Ejb  controllers-0_0_1-SNAPSHOT.jar:ArticleService id = 84898074169442305
Jan 19, 2011 6:26:46 PM com.sun.ejb.containers.BaseContainer initializeHome
INFO: Portable JNDI names for EJB ArticleFacadeImpl : [java:global/ejb-app1138741107347091524/ui-boundaries/ArticleFacadeImpl!dd.ecb.jee6.fa
cades.ArticleFacade, java:global/ejb-app1138741107347091524/ui-boundaries/ArticleFacadeImpl]
Jan 19, 2011 6:26:46 PM com.sun.ejb.containers.BaseContainer initializeHome
INFO: Portable JNDI names for EJB ArticleService : [java:global/ejb-app1138741107347091524/controllers/ArticleService!dd.ecb.jee6.services.i
mpl.ArticleService, java:global/ejb-app1138741107347091524/controllers/ArticleService]

1 Ответ

1 голос
/ 20 января 2011

решил проблему, настроив имя приложения во время создания контейнера ejb в коде javase ...

 prop.put(javax.ejb.embeddable.EJBContainer.APP_NAME, "ecb-app");       
 facade = (ArticleFacade)EJBContainer.createEJBContainer(prop).getContext().lookup("java:global/ecb-app/ui-boundaries/ArticleFacadeImpl");
...