Ahora bien, la configuracion del pool la he colocado en un archivo .properties y es de la siguiente manera
Código:
Y tengo un metodo en el frame principal que se llama initDataSource que establece el valor de DataSource de acuerdo al archivo properties. Lo muestro a continuación:driverClassName=com.mysql.jdbc.Driver username=user password=mypass url=jdbc:mysql://www.domain.tk:3306/mydb validationQuery=select 1 initialsize=4 maxSize=20 createWaitTime=100
Código:
private void initDataSource(){
Properties propiedades = new Properties();
try {
propiedades.load(new FileInputStream("src/Auxiliary/poolsettings.properties"));
dataSource = BasicDataSourceFactory.createDataSource(propiedades);
connPool.setDataSource(dataSource);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,
"No se ha podido establecer la configuración del pool \n"+ex,
"Aplicacion.- ", JOptionPane.ERROR_MESSAGE);
}
}
Al momento de crear la primera conexión, lo hace muuuy lento, alrededor de 1 min, el cual en tiempo de programación es muchísimo a mi parecer. Hice las pruebas y el problema se da en la clase de consulta, específicamente en la linea en la cual se obtiene la conexión (conn = dataSource.getConnection();)
Código:
El metodo setFreeConection cierra la conexion de la siguiente manera:public int getIDuser(String username, String password) {
Connection conn = null;
int idUser = 0;
try {
conn = dataSource.getConnection();
String SQLquery = "SELECT idUser FROM tblusers WHERE strUsername LIKE BINARY '" + username + "' AND strPassword=MD5('" + password + "')";
ResultSet rs;
PreparedStatement pstmt = conn.prepareStatement(SQLquery);
rs = pstmt.executeQuery();
if (rs.next()) {
idUser = rs.getInt("idUser");
}
rs.close();
pstmt.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Ha ocurrido un error en la obtención de idUser: \n" + ex,
"Aplicacion.-", JOptionPane.ERROR_MESSAGE);
} finally {
setFreeConection(conn);
}
return idUser;
}
Código:
¿Qué podría estar haciendo mal? ¿Tendría que hacer algo extra al iniciar el programa? Agradezco mucho quien pueda ayudarme private void setFreeConection(Connection conn) {
try {
if (null != conn) {
// En realidad no cierra, solo libera la conexion.
conn.close();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Ha ocurrido un error en el cierre de la conexión: \n" + ex,
"Aplicacion.-", JOptionPane.ERROR_MESSAGE);
}
}


