Entonces resulta que me faltaba una línea clave que habilitaba c3p0 (los parámetros de c3p0 que estaba ajustando no tenían ningún efecto porque Hibernate estaba usando su conjunto de conexiones integrado, que advierte apropiadamente que no es adecuado para la producción). En hibernate 2.x, configurando hibernate.c3p0.max_size
propiedad habilitada agrupación de conexiones c3p0. Sin embargo, en 3.x debe especificar la siguiente propiedad --
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
Además, aquí están mis parámetros de configuración finales --
<property name="hibernate.c3p0.min_size">3</property>
<property name="hibernate.c3p0.max_size">5</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.idle_test_period">100</property> <!-- seconds -->
Es bastante desafortunado que tanto Hibernate como c3p0 tengan una documentación abismal a este respecto.