[英]How to set an AbstractBinder in Jersey
I'm trying to implement my HK2 binding in Jersey, in a servlet / tomcat context. 我正在尝试在servlet / tomcat上下文中在Jersey中实现HK2绑定。
I do, in a servlet which extends org.glassfish.jersey.servlet.ServletContainer : 我在一个扩展了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());
}
... but I get : ...但我得到:
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)
So how can I do my own HK2 binding ? 那么我该如何进行HK2绑定呢?
Why this question ? 为什么提出此问题呢 ? (edit) (编辑)
It's for EntityManager and JPA in Jersey. 适用于泽西岛的EntityManager和JPA。
With Netbeans, if I generate an AbstractFacade it put 使用Netbeans,如果我生成一个AbstractFacade,它将放在
@PersistenceContext(unitName = "myunit")
private EntityManager em;
... and : ...和:
@Override
protected EntityManager getEntityManager()
{
return em;
}
But, when I call the service, em is null. 但是,当我致电服务时,em为空。 So I suppose it's @PersistenceContext which doesn't work ? 所以我想这是@PersistenceContext不起作用吗?
If I use the solution Tutorial: Put JPA in your Web App (tomcat, EclipseLink) and provide Rest JSON output all work like a charm, but I don't like use static variable private static EntityManagerFactory emf; 如果我使用解决方案教程:将JPA放在Web应用程序(tomcat,EclipseLink)中,并提供Rest JSON输出,那么所有工作都像一个符咒,但是我不喜欢使用静态变量private static EntityManagerFactory emf; for entity manager. 对于实体经理。
Thanks. 谢谢。
Below is an example where I am binding a Spring injected jersey resource to the Jetty Webserver. 以下是我将Spring注入的球衣资源绑定到Jetty Web服务器的示例。 ResourceConfig utility is provided by Jersey. ResourceConfig实用程序由Jersey提供。 Hope this example helps. 希望这个例子有帮助。 ps -- restService is a Spring injected dependency 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.