0

サーブレット/トムキャットのコンテキストで、Jersey に HK2 バインディングを実装しようとしています。

私は、 org.glassfish.jersey.servlet.ServletContainer を拡張するサーブレットで行います:

  @Override
  public void init(ServletConfig config) throws ServletException
  {
    super.init(config);
    // BinderInjection extends org.glassfish.hk2.utilities.binding.AbstractBinder
    getConfiguration().register(new BinderInjection()); 
  }

...しかし、私は得る:

java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
    at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:270)
    at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:218)
    at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:448)
    at A_Servlet.init(RestServlet.java:45)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1190)

では、どうすれば独自の HK2 バインディングを行うことができますか?

なぜこの質問?(編集)

これは、Jersey の EntityManager および JPA 用です。

Netbeans では、AbstractFacade を生成すると、

  @PersistenceContext(unitName = "myunit")
  private EntityManager em;

... と :

  @Override
  protected EntityManager getEntityManager()
  {
    return em;
  }

しかし、サービスを呼び出すと、em は null です。だから、うまくいかないのは @PersistenceContext だと思いますか?

ソリューションを使用する場合チュートリアル: あなたの Web アプリケーション (Tomcat、EclipseLink) に JPA を配置し、残りの JSON 出力を提供するすべてが魅力のように機能しますが、私は static variable private static EntityManagerFactory emf;を使用するのは好きではありません。エンティティマネージャ用。

ありがとう。

4

1 に答える 1