繁体   English   中英

如何在泽西岛设置AbstractBinder

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM