Java - Too many Conections

 
Vista:
sin imagen de perfil

Too many Conections

Publicado por ricardo (31 intervenciones) el 14/01/2014 16:04:07
Hola
tengo una aplicación en java y últimamente me ha estado dando el error " Too many Conections"
he revisado las conexiones de la BD y estan seteadas en mas de 200 a si que dudo sean als conexiones

les de jo la clase de conexión a BD para ver si me pueden ayudar y decir donde esta el error si existe

Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import cl.xx.soporte.bean.ErrorBean;
import cl.xx.soporte.tx.SendMailSSLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.log4j.Logger;
 
public class Pool {
 
    private Pool() {}
 
    private static Pool instancia = null;
    static final Logger logger = Logger.getLogger(Pool.class);
   // static InetAddress ip = null;
    private final static String driverJdbc=Propiedades.getProperty("DB_DRIVER");
    private final static String url=Propiedades.getProperty("DB_URL");
    private final static String bd=Propiedades.getProperty("DB_NOMBRE");
    private final static String userBd=Propiedades.getProperty("DB_USER");
    private final static String passBd=Propiedades.getProperty("DB_PASSWORD");
 
    public static Pool getInstance() {
        if (instancia == null) {
            instancia = new Pool();
        }
            return instancia;
    }
 
    /* devuelve la conexion */
    public static synchronized Connection creaInstancia()  {
 
        Connection conexion=null;
        try {
            Class.forName(driverJdbc);
            conexion = DriverManager.getConnection(url+bd, userBd, passBd);
            } catch (ClassNotFoundException ex) {
 
                    System.out.println("sqlError "+ex);
                    ErrorBean errorBean=new ErrorBean();
                    SendMailSSLException mailError=new SendMailSSLException();
                       // errorBean.setStrSombreClase("Pool-> Servidor: "+ip.getHostAddress());
                        errorBean.setStrNombreMetodo("creaInstancia()");
                        errorBean.setStrErrorMensaje(ex.toString());
                        mailError.enviaMailError(errorBean);
                        logger.info("[ERROR][Pool]"+ ex.getMessage()+"--"+ex.toString());
               // return false;
        }
        catch (SQLException ex) {
                     System.out.println("sqlError "+ex);
                     ErrorBean errorBean=new ErrorBean();
                     SendMailSSLException mailError=new SendMailSSLException();
                       // errorBean.setStrSombreClase("Pool-> Servidor: "+ip.getHostAddress());
                        errorBean.setStrNombreMetodo("createInstance()");
                        errorBean.setStrErrorMensaje(ex.toString());
                        mailError.enviaMailError(errorBean);
                        logger.info("[ERROR][Pool]"+ ex.getMessage()+"--"+ex.toString());
        }
                return conexion;
    }
    //si la conexion es nula crea una nueva, si ya existe retorna la existente
    public  static synchronized Connection getConnection()  {
        try{
            if (Pool.creaInstancia()== null) {
                creaInstancia();
            }
 
            }catch(Exception ex){
                    System.out.println("err "+ex);
                    ErrorBean errorBean=new ErrorBean();
                    SendMailSSLException mailError=new SendMailSSLException();
                       // errorBean.setStrSombreClase("Pool-> Servidor: "+ip.getHostAddress());
                        errorBean.setStrNombreMetodo("getConnection()");
                        errorBean.setStrErrorMensaje(ex.toString());
                        mailError.enviaMailError(errorBean);
                        logger.info("[ERROR][Pool]"+ ex.getMessage()+"--"+ex.toString());
            }
        return Pool.creaInstancia();
    }
 
    //libera las conexiones de las consultas
    public void freeConnection(Connection conn){
            if(conn == null){
                throw new IllegalArgumentException("[Pool] No se puede cerrar una conexi\u00f3n sin memoria asignada.");
            }
            try {
                System.out.println("[Pool] Cerrando la conexion");
                conn.close();
 
            } catch (Exception ex) {
                        System.out.println("[Pool] No ha sido posible liberar la conexion especificada. " + ex.getMessage());
                        ErrorBean errorBean=new ErrorBean();
                        SendMailSSLException mailError=new SendMailSSLException();
                          //  errorBean.setStrSombreClase("Pool-> Servidor: "+ip.getHostAddress());
                            errorBean.setStrNombreMetodo("freeConnection()");
                            errorBean.setStrErrorMensaje(ex.toString());
                            mailError.enviaMailError(errorBean);
                            logger.info("[ERROR][Pool]"+ ex.getMessage()+"--"+ex.toString());
            }
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jhonnathan Emilio Cardona Saineda

Too many Conections

Publicado por Jhonnathan Emilio Cardona Saineda (328 intervenciones) el 14/01/2014 19:56:46
HOla,
Es posible que estés abriendo varias conexiones y veo que deberías tener en algún lado un conexion.close(), ¿Lo tienes?
Saludps
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Too many Conections

Publicado por ricardo (31 intervenciones) el 14/01/2014 20:56:22
si en el metodo

freeConnection()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhonnathan Emilio Cardona Saineda

Too many Conections

Publicado por Jhonnathan Emilio Cardona Saineda (328 intervenciones) el 14/01/2014 22:04:18
HOla, perdón pero no creo que el problema sea de la clase si no de la configuracion de la base de datos, a no ser que el metodo freeConnection no esté siendo llamado.
Mira esto, quizá te pueda ayudar:
http://dev.mysql.com/doc/refman/5.0/es/too-many-connections.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Too many Conections

Publicado por ricardo (31 intervenciones) el 14/01/2014 22:07:26
gracias por responder, si el método es llamado lo corroboro por trazas, de lo que me di cuenta es que las clases de recolección de datos losResultSet no los tengo cerrados, creo que ese puede ser el problema.
los cerrare en todas las clases las que son muchas y te comento

gracias ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar