Quindi, dopo aver fatto attenzione e aver ricevuto un piccolo aiuto in più dal forum Oracle. Finalmente capisco perché il codice di cui sopra sta dando il messaggio di errore che sto ricevendo. Vedi qui per la risposta
Poiché sto impostando l'origine dati ogni volta che il ciclo va in giro, sto essenzialmente creando più di un pool. Il modo per farlo è creare un pool e poi estrarre le connessioni da quel pool. Nuovo codice per sostituire GetOracleConnection
Ho creato una classe singleton per l'origine dati e nel codice recupero semplicemente la connessione dall'origine dati in questo modo
Connection conn = Database.getInstance().GetPoolSource().getConnection();
package com.jam.DB;
import oracle.ucp.jdbc.PoolDataSource;
import oracle.ucp.jdbc.PoolDataSourceFactory;
public class Database {
private static Database dbIsntance;
private static PoolDataSource pds;
private Database() {
// private constructor //
}
public static Database getInstance() {
if (dbIsntance == null) {
dbIsntance = new Database();
}
return dbIsntance;
}
public PoolDataSource GetPoolSource() {
if (pds == null) {
pds = PoolDataSourceFactory.getPoolDataSource();
try {
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL("jdbc:oracle:thin:@//localhost:1521/xe");
pds.setUser("system");
pds.setPassword("xxxx");
pds.setMaxStatements(15);
return pds;
} catch (Exception e) {
}
return pds;
}
return pds;
}
}