Oracle
 sql >> Database >  >> RDS >> Oracle

C'è un modo per fare in modo che il pool di connessioni JBoss si riconnetta a Oracle quando le connessioni vanno male?

Sebbene tu possa usare il vecchio trucco "seleziona 1 dal doppio", lo svantaggio di questo è che emette una query aggiuntiva ogni volta che prendi in prestito una connessione dal pool. Per volumi elevati, questo è uno spreco.

JBoss fornisce uno speciale validatore di connessione che dovrebbe essere utilizzato per Oracle:

<valid-connection-checker-class-name>
    org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>

Ciò utilizza il metodo proprietario ping() sulla classe Oracle JDBC Connection e utilizza il codice di rete sottostante del driver per determinare se la connessione è ancora attiva.

Tuttavia, è ancora uno spreco eseguirlo ogni volta che viene presa in prestito una connessione, quindi potresti voler utilizzare la struttura in cui un thread in background controlla le connessioni nel pool e scarta silenziosamente quelle morte. Questo è molto più efficiente, ma significa che se le connessioni lo fanno falliscono, qualsiasi tentativo di usarli prima che il thread in background esegua il suo controllo fallirà.

Consulta i documenti wiki per come configurare il controllo in background (cerca background-validation-millis ).