Поддержание сеанса HTTP между вызовами веб-службы Hessian в Spring

Я настроил свои службы в соответствии с удаленным взаимодействием Spring. документации, но в клиентских приложениях я хотел бы вызывать методы службы при повторном использовании одного и того же сеанса HTTP, так как я хотел бы хранить данные, связанные с сеансом, на сервере (вместо запроса этих данных при каждом вызове).

Это возможно?

Конфигурация весенней службы на стороне клиента:

<bean id="partnersServiceImpl" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
    <property name="serviceUrl" value="http://localhost:8080/partners" />
    <property name="serviceInterface" value="somePackage.PartnersService" />
</bean>

В настоящее время каждый вызываемый метод генерирует новый идентификатор сеанса:

PartnersService partners = (PartnersService) context.getBean("partnersServiceImpl");

List<?> partnersList = partners.getSomeData(2011); // Will have one SessionID
partnersList = partners.getSomeData(2012); // Will have a new SessionID

person Vedran    schedule 29.08.2012    source источник


Ответы (2)


Попробуйте поместить этот код в самом начале вашего приложения:

CookieHandler.setDefault( new CookieManager( null, CookiePolicy.ACCEPT_ALL ) );

Это простая настройка для активации поддержки файлов cookie. См. javadocs для получения дополнительной информации. У меня тоже есть Hessian Remoting, и вот что помогло.

person gargii    schedule 30.11.2012

Ознакомьтесь с исходным кодом HessianProxy.sendRequest() — используется стандартный URLConnection для подключения к серверу и не обрабатывает файлы cookie. Таким образом, я считаю, что Hessian вообще не поддерживает файлы cookie. В конце концов, HTTP — это просто транспортный протокол, а файлы cookie — это строго технология, связанная с браузером.

person Tomasz Nurkiewicz    schedule 29.08.2012