泽西岛中的 @Context HttpServletRequest 范围

发布于 2024-12-21 03:16:35 字数 356 浏览 1 评论 0原文

我正在 Glassfish 3.1 服务器上使用 Jersey 构建一个 API,需要访问 HttpServletRequest 对象才能获取某些标头、调用者的 ip 等。我可以将其注入到每个 API 方法调用中,但似乎更有效只需在全球范围内进行即可。像下面的代码片段那样在类级别注入它是否安全,或者这会导致 Glassfish 出现某种并发问题吗?

@Path("/myapi")
@RequestScoped
public class MyApiResource {

    @Context private UriInfo context;
    @Context private HttpServletRequest request;

I'm building an API using Jersey on the Glassfish 3.1 server and need to get access to the HttpServletRequest object in order to get certain headers, caller's ip, etc. I could just inject it into every API method call but it seems more efficient to just do it globally. Is it safe to inject it at the class level like in the snippet below or will this cause some kind of concurrency issues with Glassfish?

@Path("/myapi")
@RequestScoped
public class MyApiResource {

    @Context private UriInfo context;
    @Context private HttpServletRequest request;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜未央樱花落 2024-12-28 03:16:35

这是安全的。不要使用 @RequestScoped 注释 - JAX-RS 资源默认为请求范围。这意味着为每个请求创建一个新实例,因此不存在并发问题。

It is safe. Don't use the @RequestScoped annotation - JAX-RS resources are request scoped by default. That means a new instance gets created for each request hence no concurrency issues.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文