2010-01-03 2 views
1

У нас есть веб-приложение, построенное на базе Tomcat 6/WebWork/Hibernate/SQL Server.Получение сеанса HTTP из веб-службы

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

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

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

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

ответ

2

Это фактически является частью спецификации JAX-WS. Вы можете сделать

@Resource 
WebServiceContext ctx; 

.... 

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

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

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

((BindingProvider)proxy).getRequestContext() 
    .put(BindingProvider.SESSION_MAINTAIN_PROPERTY, "true"); 
+0

Спасибо, что сделали работу. Оценил – user179056

Смежные вопросы