Как я могу использовать Hibernate SessionFactory в разных веб-приложениях? - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть два веб-приложения, которые работают на одном сервере Tomcat и подключены к одной и той же базе данных с помощью Hibernate. Я обеспокоен тем, что наличие двух работающих экземпляров SessionFactory может вызвать некоторые проблемы.

Кроме того, поскольку оба веб-приложения используют одну и ту же логику приложения, я подумал, что было бы неплохо централизовать как можно больше. И поскольку я использую Spring для конфигурации DI и Hibernate, было бы целесообразно иметь также один ApplicationContext.

Как бы я поступил так? Нужно ли развертывать обезглавленный WAR-файл, который создает ApplicationContext и, следовательно, SessionFactory и разрешает каждому приложению доступ к нему? Это даже хорошая идея?

Ответы [ 3 ]

1 голос
/ 01 апреля 2010

Вы можете поместить логику своего приложения, которая создает сеансы, и, тем не менее, обращается к ней в общий загрузчик классов (как правило, в JAR-файл / shared) - будьте очень осторожны, так как легко генерировать нечетные исключения если вы не знакомы с тем, что вы делаете.

Маловероятно, что вы могли бы извлечь из этого много пользы (поскольку вам нужно беспокоиться о синхронизации состояния сеанса веб-приложения и т. Д.) , если вам не нужно синхронизировать транзакции между двумя веб-приложениями - в которых case JTA или другие варианты, вероятно, все еще являются лучшим решением.

1 голос
/ 01 апреля 2010

Можно передать SessionFactory через JNDI (в идеале вы должны развернуть Hibernate на своем сервере приложений в качестве JMX-службы).

Но, честно говоря, наличие 2+ SessionFactory экземпляров на самом деле не проблема, не о чем беспокоиться. Это очень распространенный сценарий, даже для одного приложения (в кластерной среде).

1 голос
/ 01 апреля 2010

Я обеспокоен тем, что имея два Запуск экземпляров SessionFactory вокруг может вызвать некоторые проблемы.

Веб-приложения защищены друг от друга в выделенном ClassLoader. Поэтому я не понимаю, как могло произойти столкновение, и просто не стал бы беспокоиться об этом Два SessionFactory должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...