我们在使用Jetty-Felix HTTP服务器的OSGI环境中。
我们有一个实现泽西过滤器服务的捆绑包。
另一个bundle实现了Jersey端点类。
在Filter中,我们使用ContainerRequestContext.setProperty()设置一些自定义属性。
我的问题是如何从终点方法访问这些属性?
@Context似乎没有让我访问任何我可以获取属性的内容。
由于
答案 0 :(得分:2)
实际上,在过滤器中,我们使用ContainerRequestContext.setProperty(key,value);
在结束点,我们可以使用value = HttpServletRequest.getAttribute(key)检索它;
然后我遇到的问题是我试图将@Context注入一个类实例。但由于它是按请求,因此应将其作为函数参数注入,如下所示:
@GET
@Path("/something")
@Produces({MediaType.APPLICATION_JSON})
public AClass getSomething(@Context HttpServletRequest servletRequest) {
// Retrieve my thing from the filter
MyThing thing = (MyThing)servletRequest.getAttribute("the-key-to-my-thing");
return new AClass(mything);
}