次のような JAX-RS リソース クラスを含む Java Web プロジェクトがあります。
@Stateless
@Path("user")
public class UserResource {
@EJB
BooksResource booksResource;
...
@GET
public String get() {
return "User Resource";
}
@Path("books")
public BooksResource getBooksResource() {
System.out.println("booksResource is " + booksResource);
return booksResource;
}
...
}
@Stateless
public class BooksResource {
@GET
public String get() {
return "Books Resource";
}
}
WAR プロジェクトを実行すると、問題なく動作します。
しかし、EAR プロジェクトに入れると、 /userにしかアクセスできなくなります。/user/booksは 404 を返し、コンソールは「booksResource is null」を出力します。
EAR プロジェクトで実行すると EJB がインジェクトされないように見えますが、WAR プロジェクトで動作するのはなぜですか?
私はEclipse(インディゴJavaEE)とGlassfish3.1.2を使用しています。