La siguiente configuración funcionó para mí
<Context context="ROOT" debug="0" reloadable="false" useHttpOnly="true" cacheMaxSize="40960" cacheTTL="60000" cachingAllowed="true" antiJARLocking="true">
<Resource name="XYZ" auth="Container"
description="Exchange DB Connection"
dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
dataSource.serverName="XXXXX"
dataSource.databaseName="XXXX"
dataSource.portNumber="XXXX"
dataSource.user="xyz"
dataSource.password="xyz"
maximumPoolSize="20"
minimumIdle="5"
connectionTimeout="300000"
factory="com.zaxxer.hikari.HikariJNDIFactory"
registerMbeans="true"
type="javax.sql.DataSource" />
El valor clave aquí es connectionTimeout .La fábrica que está utilizando actualmente tiene un tiempo de espera predeterminado, después de eso fuerza el cierre de la sesión.
El valor de tiempo de espera de conexión anterior funcionó para mí, para los escenarios de su aplicación, tendrá que experimentar un poco para obtener el valor correcto.