2014-10-08 24 views
2

我们处于使用Jetty-Felix HTTP服务器的OSGI环境中。将来自Jersey Filter服务的自定义数据传递至Jersey端点服务

我们有一个实现Jersey Filter服务的包。

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

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

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

@Context似乎没有给我任何我们可以找回的属性。

感谢

+0

您可以使用请求属性吗?他们的目的之一是在过滤器和servlet之间传递属性。我必须有办法从Jetty过滤器和端点访问ServletRequest。 – 2014-10-09 06:29:57

回答

1

实际上,在过滤器中,我们使用ContainerRequestContext.setProperty(键,值);在终点,我们可以通过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); 
}