サーブレット/トムキャットのコンテキストで、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;を使用するのは好きではありません。エンティティマネージャ用。
ありがとう。