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

Oracle JDBC UCP e Java

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;

  }
}