Как получить метод HTTP-запроса в приложении Джерси, встроенном в Grizzly?

Я работаю над приложением JAX-RS. Раньше у меня он был смонтирован как WAR на сервере Tomcat, и я получал метод запроса HTTP, используя: javax.servlet.http.HttpServletRequest.getMethod().

Однако теперь я работаю со встроенным сервером Grizzly в своем приложении и обнаружил следующую ошибку при запуске:

Missing dependency for constructor public wci.api.resource.AudioSessionResource(javax.servlet.http.HttpServletRequest) at parameter index 0

Все мои ресурсы расширяют класс MyHappyCustomResource, у которого есть конструктор, который получает HttpServletRequest, предоставленный конструктором ресурсов через Injection.

Это пример конструктора ресурсов, вызов super из MyHappyCustomResource:

import javax.servlet.http.HttpServletRequest;

public AudioSessionResource(@Context HttpServletRequest request) {
    super(request);
    this.dao = new AudioSessionDao(this.sessionManager.getCurrentSession());
}

Сейчас мне это нужно только для того, чтобы получить HTTP-метод, поэтому любой другой или более правильный способ сделать это приветствуется.


person CapitanNerd    schedule 10.11.2013    source источник


Ответы (1)


Решение состояло в том, чтобы использовать класс запроса Grizzly, как указано на этой странице на официальном сайте Grizzly:

https://grizzly.java.net/httpserverframework.html

Абстракции, аналогичные тем, что предлагаются в спецификации сервлета: HttpHandler (сервлет), запрос (HttpServletRequest), ответ (HttpServletResponse).

person CapitanNerd    schedule 10.11.2013
comment
Не понимаю, почему такой хороший отзыв. Предоставленная ссылка содержит несколько примеров обработки данных публикации, но на самом деле не отвечает на вопрос. В тексте, на который ссылается ссылка, не описан метод, позволяющий использовать класс Request для определения того, является ли запрос GET или POST. - person Factor Three; 07.04.2015
comment
Это полезно для многих людей. Это не явно, а неявно в этой ссылке. Тот факт, что нет конкретной строки кода для копирования и вставки, не означает, что представленной информации недостаточно для решения проблемы. Это было для меня и людей, которые голосуют за это. Если вы этого не понимаете, я не понимаю, почему вы должны обвинять ответ в том, что его недостаточно для решения вашей проблемы. - person CapitanNerd; 08.04.2015