@Context HttpServletRequest область в Джерси - PullRequest
3 голосов
/ 13 декабря 2011

Я создаю API с использованием Jersey на сервере Glassfish 3.1, и мне нужно получить доступ к объекту HttpServletRequest, чтобы получить определенные заголовки, ip вызывающего абонента и т. Д. Я мог бы просто внедрить его в каждый вызов метода API, но, похоже, более эффективно просто сделать это глобально. Безопасно ли вводить его на уровне класса, как в приведенном ниже фрагменте кода, или это вызовет какие-то проблемы с параллелизмом в Glassfish?

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

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

1 Ответ

9 голосов
/ 13 декабря 2011

Это безопасно.Не используйте аннотацию @RequestScoped - ресурсы JAX-RS по умолчанию ограничены запросом.Это означает, что для каждого запроса создается новый экземпляр, следовательно, нет проблем с параллелизмом.

...