泽西的@Context HttpServletRequest范围

use*_*447 3 jersey thread-safety

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

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

    @Context private UriInfo context;
    @Context private HttpServletRequest request;
Run Code Online (Sandbox Code Playgroud)

Mar*_*ula 9

这很安全.不要使用@RequestScoped注释 - 默认情况下,JAX-RS资源是请求范围.这意味着为每个请求创建了一个新实例,因此没有并发问题.