我正在尝试在servlet / tomcat上下文中在Jersey中实现我的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为null。所以我认为@PersistenceContext不起作用?
如果我使用解决方案Tutorial: Put JPA in your Web App (tomcat, EclipseLink) and provide Rest JSON output,所有工作都像魅力,但我不喜欢使用静态变量私有静态EntityManagerFactory emf; 用于实体管理器。
感谢。
答案 0 :(得分:0)
下面是我将Spring注入的jersey资源绑定到Jetty Webserver的示例。 ResourceConfig实用程序由Jersey提供。希望这个例子有帮助。 附: - 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*//*");