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); } }