この質問は、 glassfish v3 embedded-allを使用したJava EE 6に関するものです。
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
インジェクションを使用)