disponibilidad comandos clusvcadm cluster alta java tomcat datasource jdbc-pool

java - comandos - intentar reconectar el origen de datos del grupo jdbc una vez que la base de datos se reinicie



clusvcadm (3)

No estoy 100% seguro de que este sea su problema, pero en http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency dice que puede usar testOnBorrow con una testOnBorrow validationQuery .

<Resource type="javax.sql.DataSource" ... testOnBorrow="true" validationQuery="SELECT 1" removeAbandoned="true" />

Tengo una aplicación web con un back-end de Java que utiliza Tomcat jdbc-pool para conexiones de bases de datos. Esto funciona bien

Sin embargo, estoy tratando de engañarlo antes de exportarlo a otras ubicaciones, y recientemente se produjo un escenario donde alguien reinició el servicio de base de datos de SQL Server pero no reinició el servicio Tomcat. Esto provocó una SQLException: java.sql.SQLException: I/O Error: Connection reset by peer: socket write error hasta que reinicié Tomcat, forzando el origen de datos jdbc-pool para volver a conectar.

Busqué algún tipo de configuración en los documentos jdbc-pool de Tomcat para decirle a la fuente de datos que intente reconectar pero no pude encontrar nada.

¿Alguien sabe si hay algún tipo de configuración para esto o debería verificar esta condición antes de cada solicitud?


Mientras buscaba el mismo problema, me encontré con esta publicación que tiene las configuraciones de conexión automática para todos los servidores de aplicaciones.

A continuación se muestra la configuración que utilicé para la conexión automática en tomcat como referencia.

<Resource auth="Container" driverClassName="oracle.jdbc.OracleDriver" initialSize="5" maxActive="120" maxIdle="5" maxWait="5000" name="jdbc/oracle/myds" password="secret" poolPreparedStatements="true" type="javax.sql.DataSource" url="jdbc:oracle:thin:@DBHOSTNAME:1521/ServiceName" username="testuser" validationQuery="select 1 from tab" testOnBorrow="true"/>

Las configuraciones de conexión automática completa para todos los servidores de aplicaciones se pueden encontrar aquí en la reconexión automática de Datasource en los servidores de aplicaciones Java .


Solo para agregar a la respuesta de Natan Cox

Referencia - http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html#Common_Attributes

<Resource type="javax.sql.DataSource" ... testOnBorrow="true" validationQuery="SELECT 1" removeAbandoned="true" />

En contra de Geronimo, aún me gustaría usar validationQuery

Validación de la base de datos

hsqldb - select 1 from INFORMATION_SCHEMA.SYSTEM_USERS

Oracle : select 1 from dual

DB2 : select 1 from sysibm.sysdummy1

mysql - select 1

Microsoft SQL Server - select 1

postgresql - select 1

ingres - select 1

derby - values 1

H2 : select 1

Firebird : select 1 from rdb$database

Referencia - DBCP - validaciónQuery para diferentes bases de datos