如何检索Jersey ContainerRequest属性?

时间:2014-11-25 15:19:18

标签: java rest tomcat servlets jersey

我在Tomcat中使用带有使用Jersey 1.x的REST API的Java 1.6 Web应用程序。在ContainerRequestFilter中,我想设置一个属性,然后再检索它。

我在我的过滤器类中开始使用此代码:

containerRequest.getProperties().setProperty("programId","foo");

但我后来究竟该如何检索?

spec说,“在Servlet容器中,属性与ServletRequest同步,并公开ServletRequest中可用的所有属性。属性的任何修改也反映在关联的属性集中ServletRequest中“。

当我尝试检索属性时,我有HttpServletRequest对象的句柄,但该对象没有“.getProperties()”方法。

为了解决这个问题,我最终在我的过滤器类中添加了这样的一行:  HttpServletRequest.setAttribute("programId", "foo");

我稍后可以使用(String)request.getAttribute("programId")退出。但我很好奇应该如何检索这些属性。

1 个答案:

答案 0 :(得分:0)

我一直在努力寻找这个问题的答案 - 最终结果是我认为除了注入请求和演员之外,我认为没有开箱即用的机制它到ContainerRequest,如下所示:

public Response resourceMethod(@Context Request request) {
    ContainerRequest containerRequest = (ContainerRequest) request;
    MyProperty prop = (MyProperty) containerRequest.getProperties().get("myPropertyName");

我真的不喜欢在资源中执行此操作,因此继续使用自定义注入,详见Custom annotation injection with Jersey 1.x

相关问题