Возможно (я не уверен), что это не очень хорошая практика, пытаться "привязать" себя к своей старой сессии (сервлету) с другого веб-сайта.
Понятно, что вы хотите, чтобы пользователь возвращался на ваш веб-сайт struts2 с платежного процессора, не запрашивая его учетные данные. Но чтобы «поддерживать сеанс в активном состоянии» в этом высокоуровневом смысле (с точки зрения пользователя, которому не требуется повторная аутентификация), не обязательно подразумевается, что вы хотите сохранить сеанс struts-servlet жив, чтобы привязаться к нему. Это кажется мне немного грязным и подверженным ненадежности - например, неясно (ни для пользователя, ни для разработчика), является ли исходная сессия открытой или закрытой в тот момент, когда пользователь находится на сайте оплаты (подумайте о действие "выйти из системы", когда он находится на сайте оплаты ... будет ли это также выход пользователя из исходного сайта?)
Я бы выбрал один из следующих сценариев:
1) Когда аутентифицированный пользователь щелкает ссылку на сайт оплаты, он открывает другое окно - есть два активных сеанса, он может перемещаться и закрывать каждый независимо (первый только дал билет аутентификации, чтобы открыть второй) , Такое поведение я обычно вижу в своем собственном домашнем банке.
2) Если новая страница сайта оплаты заменит предыдущую, то исходный сеанс (сервлет) будет признан недействительным. Но в новом сеансе, на сайте оплаты, помещается какой-то токен авторизации-аутентификации, который позволяет ему вернуться на исходный сайт (возможно, с некоторыми сессионными данными). Но в этом случае будет новый сеанс servlet-struts2.
По сути, я бы сказал, что это сомнительная практика (концептуально и намеренно) считать сеанс сервлета живым для окна браузера, которое не является живым (то есть оно было закрыто или заменено какой-либо страницей из другого веб-приложения).
Смотрите также здесь: http://nickcoblentz.blogspot.com/2008/09/jsessionid-regeneration-in-struts-2.html