我有一个Web应用程序正在从Jersey移植到RestEasy。该应用程序将Guice用于CDI。
该应用程序使用Guice提供程序注入UriInfo。在Jersey版本中,此代码如下所示:
public static class JerseyIntegrationModule extends AbstractModule {
@Override protected void configure() {
bind(WebApplication.class).to(WebApplicationImpl.class).in(Scopes.SINGLETON);
}
@Provides @RequestScoped
public HttpContext getHttpContext(WebApplication webapp) {
return webapp.getThreadLocalHttpContext();
}
@Provides @RequestScoped
public UriInfo getUriInfo(HttpContext httpContext) {
return httpContext.getUriInfo();
}
}
所有这些类WebApplication
,HttpContext
等都是特定于Jersey的。问题是如何在RestEasy下提供类似的功能。
一次尝试是
public class MyServlet extends ServletModule {
@Provides @RequestScoped
public UriInfo getUriInfo(@Context UriInfo info) {
return info;
}
}
但这会导致Guice的注入代码中的堆栈溢出。
我知道@Context属性应该允许我在RestEasy下注入UriInfo,但是我不知道要在Guice提供程序中使用它。
该应用程序将部署在Wildfly 15上。
任何帮助都非常感激,因为这使我的头部旋转。
答案 0 :(得分:0)
似乎有一种解决方案
public class MyServlets extends ServletModule {
@Provides @RequestScoped
public UriInfo getUriInfo() {
return ResteasyProviderFactory.getContextData(UriInfo.class);
}
}
答案 1 :(得分:0)
Resteasy随RequestScopeModule一起提供UriInfo,HttpServletRequest等。
更多信息http://docs.jboss.org/resteasy/docs/3.6.3.Final/userguide/html_single/index.html#Guice1