Wir migrieren derzeit Anwendungen, die auf einem Liberty-Server (8.5.5.9) ausgeführt werden sollen. Wir haben festgestellt, dass Verbindungen zwischen dem App-Server und der Datenbank gelegentlich durch die Firewall beendet werden, da sie für längere Zeit nicht genutzt werden. Wenn dies geschieht, wird die Anwendung bei der nächsten HTTP-Anforderung eine dieser unterbrochenen Verbindungen erhalten.Kann ich in einem WAS Liberty-Verbindungspool Verbindungen beim Ausleihen validieren?
Zuvor verwendeten wir Apache Commons DBCP, um den Verbindungspool zu verwalten. Einer der configuration parameters in a DBCP conneciton pool ist "testOnBorrow", die verhindert, dass die Anwendung einer dieser schlechten Verbindungen übergeben wird.
Gibt es einen solchen Konfigurationsparameter in einer Liberty-verwalteten Datenquelle?
Bisher haben wir unsere Datenquelle wie folgt konfiguriert:
<dataSource jndiName="jdbc/ora" type="javax.sql.DataSource">
<properties.oracle
user="example" password="{xor}AbCdEfGh123="
URL="jdbc:oracle:thin:@example.com:1521:mydb"
/>
<connectionManager
minPoolSize="3" maxPoolSize="10" maxIdleTime="10m"
purgePolicy="ValidateAllConnections"
/>
<jdbcDriver id="oracle-driver" libraryRef="oracle-libs"/>
</dataSource>
Die purgePolicy derzeit gesetzt ist, alle Verbindungen zu validieren, wenn man schlecht zu finden ist (zB über Nacht, wenn alle Verbindung für eine lange untätig gewesen Zeit). All dies verhindert jedoch, dass mehrere fehlerhafte Verbindungen nacheinander an die Anwendungen übergeben werden.
Eine Option im connectionManager wäre, einen altenTimout = "20m" festzulegen, um automatisch Verbindungen zu entfernen, die alt genug sind, um bereits von der Firewall beendet zu werden. Dies würde jedoch auch Verbindungen beenden, die kürzlich verwendet wurden (was verhindert, dass die Firewall sie bricht).
Fehle ich etwas offensichtlich hier? Danke!
Ich würde vorschlagen, mit AlterTimeout, da viele Firewalls ist es egal, ob die Verbindung verwendet wird oder nicht und nur Verbindungen, die offen für lange Zeit sind. – Gas