1

我正在使用带有 glassfish 嵌入式服务器的 javaee6/ejb3.1 api。我的应用程序结构是 ui-controller 模块 ejbs 调用 biz-controller ejbs。全局 jndi 名称格式为 java:global/myapp/mymodule/myejb。

但是当我尝试对两个模块进行单元测试而不在嵌入式服务器上打包应用程序时;获取与临时文件夹相关的 jndi 的不同应用程序名称...

请在此处找到控制台日志..

生成的 jndi 名称就像.. java:global/ejb-app1138741107347091524/controllers/ArticleService 每次我运行测试

java:global/ejb-appXXXXXXXXXXXXXXXXXX/controllers/ArticleService

jndi 名称中的 ejb-app 名称中的 XXXXXXXX 已更改...

    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]
4

1 回答 1

1

通过在 javase 代码中创建 ejb 容器时配置应用程序名称解决了该问题...

 prop.put(javax.ejb.embeddable.EJBContainer.APP_NAME, "ecb-app");       
 facade = (ArticleFacade)EJBContainer.createEJBContainer(prop).getContext().lookup("java:global/ecb-app/ui-boundaries/ArticleFacadeImpl");
于 2011-01-20T07:47:45.873 回答