Java 如何在Jersey设置AbstractBinder
我试图在Jersey中,在servlet/tomcat上下文中实现我的HK2绑定 我知道,在扩展org.glassfish.jersey.servlet.ServletContainer的servlet中:Java 如何在Jersey设置AbstractBinder,java,tomcat,servlets,jersey,hk2,Java,Tomcat,Servlets,Jersey,Hk2,我试图在Jersey中,在servlet/tomcat上下文中实现我的HK2绑定 我知道,在扩展org.glassfish.jersey.servlet.ServletContainer的servlet中: @Override public void init(ServletConfig config) throws ServletException { super.init(config); // BinderInjection extends org.glassf
@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,如果我生成一个抽象外观,它将
@PersistenceContext(unitName = "myunit")
private EntityManager em;
。。。以及:
@Override
protected EntityManager getEntityManager()
{
return em;
}
但是,当我调用该服务时,em为null。所以我想是@PersistenceContext不起作用
如果我使用的解决方案都很有魅力,但我不喜欢使用静态变量private static entitymanager factory emf;对于实体管理器
谢谢。下面是我将Spring注入的jersey资源绑定到Jetty Web服务器的示例。ResourceConfig实用程序由Jersey提供。希望这个例子有帮助。 p、 restService是一种Spring注入的依赖项
ResourceConfig config = new ResourceConfig(CustomRestService.class);
config.register(new AbstractBinder() {
@Override
protected void configure() {
bind(restService).to(CustomRestService.class);
}
});
restService.start();
ServletHolder apiServlet = new ServletHolder(new ServletContainer(config));
ServletHolder apiServlet = new ServletHolder(new HttpServletDispatcher());
servletContainer.addServlet(apiServlet, "/api/v1*//*");
如果您可以使用Jersey 2.0,那么HK2依赖项注入将集成到框架中。请阅读此处的相关问题:。您到底想绑定什么?在
应用程序(ResourceConfig
)实例中注册您的BinderInjection
还不够吗?请同时咨询。你好,乔斯卡森和米哈尔·加伊多斯。谢谢你的帮助和评论。请参阅我的编辑。