Кто-нибудь когда-нибудь пробовал следующее? (и был успешным)
В веб-приложении (A) я использую тег <c:import>
для получения защищенного содержимого из другого веб-приложения (B), работающего на том же сервере приложений (WebSphere 7). Оба приложения используют Hibernate и фильтр OSIV Spring.
Глядя на источник тега импорта, я вижу, что стратегия заключается в том, что если URL-адрес является относительным, то он включает в себя содержимое, используя RequestDispatcher.include()
. Если URL-адрес является абсолютным, код открывает URLConnection
.
Поскольку мне необходимо отслеживать удаленного пользователя, я не могу сделать следующее:
<c:import url="http://host:port/B/getContent">
Doing
<c:import url="/getContent" context="/B">
вместо этого будет работать. Но при таком подходе я не обращаюсь к фильтру OSIV Spring, настроенному в B. Исходный (импортирующий) запрос в A проходит через фильтр OSIV, но он не действует в B. Следовательно, я получаю обычное сообщение «Нет сеанса или сеанс закрыт» ошибка для ленивых инициализаций сущностей.
Здесь я немного уловил 22, и мне интересно, реально ли то, что я пытаюсь сделать, в соответствии с моими требованиями.
Суть в том, что мне удалось получить то, что я хотел, путем агрегации моего контента напрямую с клиента с помощью Dojo (я использую SSO, чтобы идентифицировать пользователя), но я бы предпочел другой способ, если он было возможно.