将自定义数据从Jersey Filter服务传递到Jersey End-Point服务

时间:2014-10-08 19:35:29

标签: java jersey jetty osgi

我们在使用Jetty-Felix HTTP服务器的OSGI环境中。

我们有一个实现泽西过滤器服务的捆绑包。

另一个bundle实现了Jersey端点类。

在Filter中,我们使用ContainerRequestContext.setProperty()设置一些自定义属性。

我的问题是如何从终点方法访问这些属性?

@Context似乎没有让我访问任何我可以获取属性的内容。

由于

1 个答案:

答案 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);
}