【发布时间】:2011-04-25 16:46:18
【问题描述】:
这个问题是关于 Java EE 6,使用 glassfish v3 embedded-all。
我有一个单元测试,它使用 EJBContainer 来测试我的无状态 EJB。问题是我无法使用 JNDI 查找 EJB(远程):
setup() {
ctx = EJBContainer.createEJBContainer().getContext();
}
...
test() {
BookService bookService = (BookService)ctx.lookup("java:global/BookServiceEJB!com.something.service.BookService");
...
}
@Stateless
public class BookServiceEJB implements BookService {
...
}
@Remote
public interface BookService {
...
}
给出异常:
javax.naming.NamingException: Lookup failed for 'java:global/BookServiceEJB!com.something.service.BookService' in SerialContext [Root exception is javax.naming.NameNotFoundException: BookServiceEJB!com.something.service.BookService not found]
...
caused by: javax.naming.NameNotFoundException: BookServiceEJB!com.something.service.BookService not found
我尝试了几种JNDI资源路径:
例如
java:global/BookServiceEJB
java:global/BookService
甚至:
java:global/BookShelf-1.0-SNAPSHOT/BookServiceEJB
等等……
没有用
我没有配置任何 xml 部署文件,在 META-INF 中只有一个 persistence.xml。
测试使用的是maven surefire:
mvn clean test
非常感谢任何帮助!
注意:可以完全部署到 Glassfish 服务器(使用 appclient 和 @EJB 注入)
【问题讨论】:
-
注意:完全部署到 Glassfish 服务器工作(使用 appclient 和 @EJB 注入)
标签: jakarta-ee jndi java-ee-6 glassfish-3 glassfish-embedded