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