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.