HttpServletRequest без контейнера сервлетов

Я использую Jersey с Jetty (или Grizzly) и подключаю сервер следующим образом:

final ApplicationHandler handler = new ApplicationHandler(resourceConfig);
server = GrizzlyHttpServerFactory.createHttpServer(uri, handler);
server.start();

Используя этот метод для запуска Джерси, у меня нет доступа к HttpServletRequest, поскольку фабрики подключены к WebComponent. Однако я могу внедрить javax.ws.rs.core.Request или org.glassfish.jersey.server.ContainerRequest, но я не уверен, как оттуда перейти к HttpServletRequest.

Причина, по которой мне нужны объекты запроса и ответа сервлета, заключается в том, что я использую API-интерфейсы фильтров, которые зависят от них. Я неправильно подключаю Grizzly/Jetty или мне нужна какая-то фабрика адаптеров для javax.ws.rs.core.Requests?

Спасибо!


person Zack    schedule 20.02.2014    source источник
comment
Я не понимаю. Вы не можете ввести HttpServletRequest при запуске приложения, еще никто не сделал запрос.   -  person Sotirios Delimanolis    schedule 20.02.2014
comment
Извините, я должен уточнить, что я пытаюсь внедрить HttpServletRequest, используя аннотацию Context в настроенном ресурсе. Проблема в том, что фабрика PerScope регистрируется только через веб-компонент, который не затрагивается описанным выше методом.   -  person Zack    schedule 20.02.2014


Ответы (1)


Если вы используете Grizzly, вы можете создать сервер через GrizzlyWebContainerFactory из grizzly2-servlet. Таким образом, вы сможете внедрить HttpServletRequest.

person alexey    schedule 20.02.2014