[英]How to set an AbstractBinder in Jersey
我正在尝试在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为空。 所以我想这是@PersistenceContext不起作用吗?
如果我使用解决方案教程:将JPA放在Web应用程序(tomcat,EclipseLink)中,并提供Rest JSON输出,那么所有工作都像一个符咒,但是我不喜欢使用静态变量private static EntityManagerFactory emf; 对于实体经理。
谢谢。
以下是我将Spring注入的球衣资源绑定到Jetty Web服务器的示例。 ResourceConfig实用程序由Jersey提供。 希望这个例子有帮助。 ps-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*//*");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.