2016-03-14 6 views
1

Я уже написал одно веб-приложение с использованием java, spring и tomcat8 в качестве сервера, и теперь я хочу написать другое, но это нужно для взаимодействия с предыдущим. Он должен делиться некоторыми данными из базы данных и сеанса (я имею в виду, если войти в систему в одном приложении, ему не нужно входить в другое приложение). Каков наилучший способ реализации этого?Два webapps, которые делят данные и сеанс

+0

Глядя на http://www.josso.org/, возможно, стоит. Единая точка входа. – Anirudh

ответ

0

Существует несколько способов решить эту проблему. Tomcat поддерживает кластеризацию: https://tomcat.apache.org/tomcat-9.0-doc/cluster-howto.html Но, как уже писал Димитрисли, это может быть самым простым решением, чтобы взглянуть на весеннюю сессию (см .: http://projects.spring.io/spring-session/).

Я использую это в своем проекте, и он работает очень хорошо, но вы должны знать, что в настоящее время схема сериализации по умолчанию является «ObjecStream», которая является обычной сериализацией Java. Таким образом, вы не можете использовать разные версии класса на своих серверах, которые вы вводите в сеанс. Это приведет к исключению десериализации. Но я уверен, что такая же проблема может возникнуть, если вы используете tomcat/jboss7glassfish/etc. кластеризация.

Если вы хотите быть свободным в развертывании служб, вы можете использовать одно из решений кластеризации и хранить только минимальную информацию, такую ​​как sessionID, а затем использовать что-то вроде redis или любого другого решения для базы данных, которое вы хотите хранить связанные с сессией данные в более «классическом эволюционном» формате, подобном, например, json. Это приводит к большей работе для вас, но также значительно большей гибкости.

0

Это довольно широкий, но, как правило, вы используете только одну конфигурацию базы данных для обоих приложений, и вы можете использовать репликацию сеанса для обмена сеансами между серверами. У Tomcat есть встроенные функции, но вы также должны рассмотреть Spring Session, который подключается к цепочке фильтров сервлетов для экстернализации сеансов в кросс-платформенном стиле.

0

Существует несколько решений для кластеризации сеансов, но поскольку вы находитесь в экосистеме Spring, взгляните на недавно запущенный Spring Session project, который упрощает эту задачу, а также агностик провайдера Webapp.

0

Как правило, сеансы общего доступа не рекомендуется, для совместного использования базы данных используйте JNDI и получите объекты. Если логин должен быть обработан в вашем случае, используйте Single SignON.

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