У нас есть приложение Tomcat6/Hibernate 3.x/Postgres, и я беспомощно не в курсе, немного не понимаю, что представляет собой «связь» между сервером приложений и БД, по крайней мере, как насколько JDBC идет.
Якобы мы используем пул соединений (Tomcat JDBC), который открывает 10 подключений при запуске. Netstat, кажется, подтверждает это:
netstat -nato | grep 5432
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
::ffff:192.168.42.11:5432 ESTABLISHED off (0.00/0/0)
Но эти соединения всегда остаются в выключенном состоянии. Когда я устанавливаю журналы Hibernate на DEBUG для JDBC, я вижу массу вызовов openConnection()
и closeConnection()
(более 100 для простой веб-страницы), но вывод netstat остается неизменным.
Значит, JDBC и сетевые соединения не создаются в соотношении 1:1? Является ли это просто доказательством того, что пул соединений действительно работает?