PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

tomcat 7 Pula połączeń JDBC - osobna pula dla każdej bazy danych?

Dobra, trochę kopałem i sam to wymyśliłem. (Dzięki za wielu miłych ludzi z listy dyskusyjnej tomcat-users!)

JB Nizet ma rację:jeśli tworzysz pule połączeń bazy danych Tomcat z kodu Java, każde instancja DataSource dosłownie jest/reprezentuje oddzielną pulę połączeń. To było dla mnie zaskakujące; pochodzących z tła .NET, założyłem, że pula połączeń Tomcat będzie działać jak pula połączeń SqlServer/ADO.NET:jeśli użyjesz dwóch identycznych parametrów połączenia, aby uzyskać dwa połączenia z bazą danych, oba będą pochodzić z tej samej puli połączeń. Jednak w Tomcat, podczas tworzenia instancji obiektów DataSource z kodu Java, każda nowa instancja DataSource to zupełnie nowa pula połączeń. Tak więc, jeśli chcesz na przykład zachować te pule połączeń w wywołaniach usług sieciowych JAX-RS, musisz zbudować własną pamięć podręczną puli bazy danych (DataSource), umieścić w niej instancje DataSource (po jednej na bazę danych) i przechowywać je w obiekcie, który JAX-RS będzie utrzymywał się między wywołaniami usług internetowych. Właśnie to zrobiłem i działa dobrze.

btw, pula połączeń z bazą danych Tomcat oferuje funkcjonalność podobną do pulowania połączeń SqlServer/ADO.NET, wystarczy użyć zasobów JNDI, aby utworzyć instancje DataSource. (W moim przypadku nie jest to opcja, ponieważ bazy danych są tworzone dynamicznie w mojej aplikacji, a definicje JNDI są zazwyczaj tworzone z plików konfiguracyjnych, które Tomcat odczytuje podczas uruchamiania.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Railsy 3 ignorują wyjątek unikatowego ograniczenia Postgresa

  2. nie można uruchomić prostego wstawiania PostgreSQL

  3. Postgres DB Trigger wywołujący funkcję Java

  4. Błąd bazy danych Postgres Nieprawidłowy nagłówek strony

  5. czy klucz podstawowy jest automatycznie indeksowany w postgresql?