我正在启动一个grizzly服务器,如下所示:
URI baseUri = UriBuilder.fromUri("http://localhost/").port(9998).build();
ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.packages("com.example");
resourceConfig.property("contextConfig", applicationContext);
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(baseUri, resourceConfig, false);
server.start();
在包com.example中,我有如下过滤器:
@Component
@Provider
@Priority(0)
public class MyFilter implements ContainerRequestFilter {
@Context
private HttpServletRequest httpServletRequest;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
/* httpServletRequest is null here */
}
}
我的过滤器按spring的预期示例化。而且,jax-rs检测到它并使用spring示例化的相同示例。我正在尝试访问底层 HttpServletRequest
但我不知道怎么做。
我知道servlet请求永远不会被注入,直到过滤器示例被创建为代理,因为servlet请求是请求范围的。我试着用 @RequestScope
,同样的道理。
1条答案
按热度按时间uz75evzq1#
您需要使用来自的grizzlywebcontainerfactory
如果要创建servlet容器。目前,您没有创建servlet容器,这就是为什么没有
HttpServletRequest
可用。你可以这样做