したがって、注意深く、Oracleフォーラムから少し余分な助けを得た後。上記のコードが私が受け取っているエラーメッセージを表示している理由をついに理解しました。 応答についてはこちらをご覧ください
ループが発生するたびにデータソースを設定するため、基本的に複数のプールを作成しています。これを行う方法は、1つのプールを作成し、そのプールから接続をプルすることです。GetOracleConnection
を置き換える新しいコード データソース用のシングルトンクラスを作成し、コードでは、このようなデータソースから接続を取得するだけです。
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;
}
}