2

次のような 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を使用しています。

4

1 に答える 1

0

何度も試してみた結果、まったく同じプロジェクト(EAR)で、うまく動作することもあれば(/userと/user/booksの両方で問題ない)、間違って動作することもあります(私の質問に記載されている状況)。 [自動ビルド]にチェックを入れます。eclipse WTP や glassfish については何か問題があると思います。

于 2012-08-04T17:21:58.320 に答える