Получение HTTP-сессии из веб-сервиса

У нас есть веб-приложение, построенное на Tomcat 6/WebWork/Hibernate/стек SQL Server.

Частью веб-приложения является карта сети, построенная с использованием набора инструментов Flare (предшественником Flare был Prefuse). Данные карты сети извлекаются через вызов веб-сервиса, например, getData(). Этот вызов выполняется приложением Flare для получения XML-данных, которые необходимо отобразить. Сам веб-сервис был разработан с использованием Apache CXF.

Я пытаюсь понять, как я могу получить сеанс HTTP в методе, обозначенном как веб-служба. Мне это нужно, потому что мне нужно поддерживать данные на стороне сервера через клиентские (приложение Flare) запросы веб-сервиса.

Нужно ли мне получать сеанс HTTP с помощью базовых API-интерфейсов сервлета (зная, что используется сервлет CXF)? Или есть поддержка API на уровне CXF?

Сам веб-сервис работает в Tomcat 6.


person user179056    schedule 03.01.2010    source источник


Ответы (1)


На самом деле это часть спецификации JAX-WS. Ты можешь сделать

@Resource 
WebServiceContext ctx;

....

ctx.getMessageContext().get(MessageContext.SERVLET_REQUEST)

чтобы получить объект ServletRequest, из которого вы можете делать что угодно с сеансом или чем-то еще.

Примечание: по умолчанию клиенты JAX-WS не поддерживают файл cookie сеанса. Вы должны установить их для поддержания сеанса:

((BindingProvider)proxy).getRequestContext()
  .put(BindingProvider.SESSION_MAINTAIN_PROPERTY, "true");
person Daniel Kulp    schedule 06.01.2010