Мы работаем над одним проектом, в котором мы используем JaxWSProxyFactoryBean, предоставляемый средой CXF, для вызова веб-сервисов. Я использую конфигурацию SPRING для создания клиентов, а не для использования API непосредственно в коде. Я также устанавливаю свойство maintain_session, чтобы убедиться, что сеанс поддерживается клиентами WS.JaxWSProxyFactoryBean sharing HTTP-сеанс
< JAXWS: идентификатор клиента = адрес "userAuthenticationServiceClient1" = "$ {application.deployment.url}/UserAuthentication" ServiceClass = "com.authentication.webservice.IUserAuthenticationService" абстрактные = "истина" > < JAXWS: Свойства > < ввод ключа = "javax.xml.ws.session.maintain" > < тип значения = "java.lang.Boolean" > истинная </значение > </входа > </JAXWS: свойства > </JAXWS: клиент >
Но я обнаружил, что сеанс не сохраняется в различных случаях WebServices. Чтобы сделать его более понятным Если есть прокси-клиенты, такие как wc1, wc2, wc3. Все операции, вызываемые в wc1, будут иметь свой сеанс, а wc2 создаст новый сеанс. Может ли кто-нибудь сообщить мне, какие настройки мне нужно сделать, чтобы все клиенты ws разделили сессию?
эй даниэль, спасибо, что ответил на мое сообщение. Но его невозможно использовать выше API, так как я уже упоминал, что я использую управляемые bean-элементы SPRING. Ни один из созданных мной классов не знает, вызывают ли они какой-либо веб-сервис, поскольку инъецируются экземпляры, созданные jaxws: client. Я хотел иметь общий способ сделать это, не информируя свои классы о том, где они живут :) – CuriousMind
Ah. В этом случае единственное, что я могу придумать, - написать пару перехватчиков, чтобы это сделать. Перехватчик «In», который записывал бы все файлы cookie сеанса и «Out», чтобы добавлять/обновлять файлы cookie сеанса. Настройте их для всех объектов. –