Совместное использование Hibernate на нескольких экземплярах Tomcat - PullRequest
5 голосов
/ 30 августа 2010

У меня есть 4 веб-приложения, которые имеют общую ссылку на реализацию Hibernate, но работают на разных экземплярах Tomcat. Например, пул соединений, настроенный в Hibernate с минимальным размером 3 c3p0), приведет к открытию соединения 12 (3 для каждого экземпляра) все проекты запущены.

Я бы хотел «поделиться» реализацией Hibernate с экземплярами (и, таким образом, чтобы всегда было открыто 3 соединения вместо 12), и я задавался вопросом о лучшем решении для его достижения.

Какие-нибудь советы?

Спасибо

Ответы [ 3 ]

5 голосов
/ 31 августа 2010

Я хотел бы «поделиться» реализацией Hibernate с экземплярами (и, таким образом, чтобы всегда было открыто 3 соединения вместо 12), и я задавался вопросом о лучшем решении для его достижения. Любые советы?

Это не очень хорошая идея. Короче говоря, пул соединений должен иметь размер, достаточный для того, чтобы он содержал достаточно соединений для обслуживания входящих одновременных запросов, не дожидаясь, пока соединение станет доступным. С 4 приложениями вам, скорее всего, потребуется более 3 подключений. С вашей логикой что-то не так (или неясно).

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

Смотри также

1 голос
/ 30 августа 2010

Один из подходов может заключаться в создании дополнительной внутренней службы, которая запускает Hibernate и которая связана с внешними службами через веб-службу.Таким образом, будет один экземпляр Hibernate.

0 голосов
/ 30 августа 2010

Вы не можете сделать это. Каждый экземпляр Tomcat работает в своей собственной JVM, поэтому вы не можете совместно использовать объекты или классы между ними.

Почему вам не нравятся соединения с 12 БД? Современные системы баз данных способны обрабатывать миллионы соединений.

...