Also nach Vorsicht und etwas zusätzlicher Hilfe aus dem Oracle-Forum. Ich verstehe endlich, warum der oben genannte Code die Fehlermeldung ausgibt, die ich erhalte. Antwort siehe hier
Da ich die Datenquelle jedes Mal einstelle, wenn die Schleife umläuft, erstelle ich im Wesentlichen mehr als einen Pool. Dazu erstellen Sie einen Pool und ziehen dann Verbindungen aus diesem Pool. Neuer Code zum Ersetzen von GetOracleConnection
Ich habe eine Singleton-Klasse für die Datenquelle erstellt und im Code rufe ich einfach die Verbindung von der Datenquelle wie
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;
}
}