簡體   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