将自定义数据从 Jersey Filter 服务传递到 Jersey End-Point 服务
Posted
技术标签:
【中文标题】将自定义数据从 Jersey Filter 服务传递到 Jersey End-Point 服务【英文标题】:Passing custom data from Jersey Filter service to Jersey End-Point service 【发布时间】:2014-12-03 14:10:26 【问题描述】:我们处于使用 Jetty-Felix HTTP 服务器的 OSGI 环境中。
我们有一个实现 Jersey 过滤器服务的包。
另一个包实现了 Jersey 端点类。
在Filter中,我们使用ContainerRequestContext.setProperty()设置了一些自定义属性。
我的问题是如何从端点方法访问这些属性?
@Context 似乎没有让我访问任何我们可以取回属性的东西。
谢谢
【问题讨论】:
你能用请求属性代替吗?它们的目的之一是在过滤器和 servlet 之间传递属性。我必须有办法从 Jetty 过滤器和端点访问 ServletRequest。 【参考方案1】:其实在过滤器中,我们使用的是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);
【讨论】:
以上是关于将自定义数据从 Jersey Filter 服务传递到 Jersey End-Point 服务的主要内容,如果未能解决你的问题,请参考以下文章
将自定义参数传递给 uibutton #selector swift 3