我正在尝试在泽西岛的 servlet / tomcat 上下文中实现我的 HK2 绑定。
我这样做,在一个扩展 org.glassfish.jersey.servlet.ServletContainer 的 servlet 中:
@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 绑定呢?
为什么这么问 ?(编辑)
它适用于泽西岛的 EntityManager 和 JPA。
使用 Netbeans,如果我生成一个 AbstractFacade 它放
@PersistenceContext(unitName = "myunit")
private EntityManager em;
... 和 :
@Override
protected EntityManager getEntityManager()
{
return em;
}
但是,当我调用服务时,em 为空。所以我想是@PersistenceContext 不起作用?
如果我使用解决方案Tutorial: Put JPA in your Web App (tomcat, EclipseLink) 并提供 Rest JSON 输出,所有工作都像魅力一样,但我不喜欢使用静态变量private static EntityManagerFactory emf; 对于实体经理。
谢谢。