I have a site built with Java EE. When the site starts I wrote a context listener in index.jsp to open MySQL connection for future use :
public void contextInitialized(ServletContextEvent servletContextEvent)  { 
    try {
        ServletContext servletContext = servletContextEvent.getServletContext();
        DatabaseController db_controller = new DatabaseController();
        db_controller.connectoDatabase();
        servletContext.setAttribute("db_controller", db_controller);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
And get the attribute db_controller in my jsp page :
<%
    DatabaseController db_controller = (DatabaseController)application.getAttribute("db_controller");
    out.print("<span>  You have " +db_controller.getClientNumber()+ 
    " clients and "+db_controller.getJobNumber()+" jobs. </span>");
%>
The problem is that when I refresh the site ten times, MySQL shows error said "Too many connections". I entered MySQL and saw thousands of connections in "sleep" state.
Could anyone tell me how to solve this problem? I do not want to increase connection number because it's not good idea. I did write a context destroyer but it doesn't work :
public void contextDestroyed(ServletContextEvent servletContextEvent)  { 
    ServletContext servletContext = servletContextEvent.getServletContext();
    DatabaseController db_controller = (DatabaseController) servletContext.getAttribute("db_controller");
    db_controller.closeConnection();
}
Thanks.
