sql >> Base de Datos >  >> RDS >> PostgreSQL

tomcat 7 Grupo de conexiones JDBC:¿grupo separado para cada base de datos?

Bien, investigué un poco y lo descubrí yo mismo. (¡Gracias por las muchas personas amables en la lista de correo de usuarios de tomcat!)

JB Nizet tiene razón:si está creando grupos de conexiones de bases de datos Tomcat a partir de código Java, cada fuente de datos que crea una instancia es/representa literalmente un grupo de conexiones separado. Esto fue sorprendente para mí; viniendo de un fondo .NET, asumí que la agrupación de conexiones de Tomcat funcionaría como la agrupación de conexiones SqlServer/ADO.NET:si usa dos cadenas de conexión idénticas para obtener dos conexiones de base de datos, ambas provendrán del mismo grupo de conexiones. Sin embargo, en Tomcat, al crear instancias de objetos DataSource desde código Java, cada nueva instancia de DataSource es un grupo de conexiones completamente nuevo. Por lo tanto, si desea conservar estos grupos de conexiones en las llamadas al servicio web JAX-RS, por ejemplo, debe crear su propio caché de grupo de base de datos (Fuente de datos), colocar las instancias de Fuente de datos (una por base de datos) en él y almacenarlo. en un objeto que JAX-RS persistirá en las llamadas al servicio web. Acabo de hacer esto y está funcionando bien.

Por cierto, la agrupación de conexiones de la base de datos Tomcat ofrece una funcionalidad similar a la agrupación de conexiones SqlServer/ADO.NET, solo tiene que usar recursos JNDI para crear sus instancias de DataSource. (En mi caso, esta no es una opción, ya que las bases de datos se crean dinámicamente en mi aplicación y las definiciones JNDI generalmente se crean a partir de archivos de configuración que Tomcat lee al inicio).