【问题标题】:How can you pass data from a Filter to the endpoint in Jersey如何将数据从过滤器传递到泽西岛的端点
【发布时间】:2011-07-29 22:33:07
【问题描述】:

您能否在不使用 ThreadLocal 或 HttpSession 的情况下将一些数据从 javax.servlet.Filter 传递到 Jersey 端点?

因为第一个问题是“你为什么要这样做?”:主要是好奇。在实践中,我认为我可以使用它来将身份验证期间生成的一些数据传递给端点。不使用 ThreadLocal 消除了使用它的诱惑(希望没有必要解释为什么这是邪恶的)并且不使用 HttpSession 更像是一个怪癖:)

【问题讨论】:

    标签: java servlets jersey servlet-filters


    【解决方案1】:

    尝试使用@Context 注入。我不确定你会收到什么对象(我在某个地方看到了WebServiceContext,它是 jax-ws),但它应该包含HttpServletRequest。这样您就可以在过滤器中设置请求属性并在其余服务中读取它们

    【讨论】:

    • 啊。凉爽的。基本上使用HttpServletRequest.setAttribute。我不知道为什么,但我的印象是这些转到 HttpSession?
    • 不错。然后我可以编写一个@Provider 将数据作为端点中的参数提供给我。
    • 对于任何想做提供者的人,我发现这很有用:codahale.com/what-makes-jersey-interesting-injection-providers(不要忘记你可以在提供者本身内部注入带有 @Context 的 HttpContext 或 HttpServletRequest 之类的东西)
    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多