PGPoolingDataSourceクラスを使用してデータベースプールを作成すると問題が発生します。しばらくすると、多くのユーザーが作業しているときにプールがダウンし、エラーが表示されません。
プールを作成するクラスのコードは次のとおりです。
public class PgConexion {
private static PgConexion _instancia = new PgConexion(); // instancia de la clase
private Configuracion config;
private PGPoolingDataSource source;
/**
* instancia la clase y carga las opciones de configuracion
*/
public PgConexion() {
final URL archivo = Constantes.RUTA_CONFIG;
if(archivo != null){
config = new Configuracion(archivo);
}
}
/**
* regresa la instancia del pool de conexiones
* @return
*/
public static PgConexion getInstance() {
return _instancia;
}
/**
* crear la conexion la conexion
* @return
* @throws SQLException
*/
public void crearConexion() throws SQLException{
source = new PGPoolingDataSource();
// configuracion del pool
source.setDataSourceName("Logistica");
source.setServerName(config.get("servidor_sql"));
source.setPortNumber(Integer.parseInt(config.get("puerto_sql")));
source.setDatabaseName(config.get("bd_sql"));
source.setUser(config.get("usuario_sql"));
source.setPassword(config.get("contrasena_sql"));
source.setMaxConnections(30);
}
/**
* devuelve la conecion a utilizar
* @return
* @throws SQLException
*/
public Connection nuevaConexion() throws SQLException{
if(source == null){
crearConexion();
}
// genero la conexion de la lista del pool
return source.getConnection();
}
/**
* Cierra las conexiones y libera los recursos
*/
public void cerrarConexion(){
source.close();
}
}
これを修正するにはどうすればよいですか?