Java servlet上下文导致MySQL连接太多

时间:2015-08-10 13:45:01

标签: java mysql jsp servlets

我有一个使用Java EE构建的网站。当站点启动时,我在index.jsp中编写了一个上下文监听器来打开MySQL连接以供将来使用:

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

在我的jsp页面中获取属性db_controller

<%
    DatabaseController db_controller = (DatabaseController)application.getAttribute("db_controller");
    out.print("<span>&nbsp;&nbsp;You have " +db_controller.getClientNumber()+ 
    " clients and "+db_controller.getJobNumber()+" jobs. </span>");
%>

问题在于,当我刷新网站十次时,MySQL会显示“连接太多”的错误。我进入了MySQL,看到成千上万的连接处于“睡眠”状态。

有谁能告诉我如何解决这个问题?我不想增加连接数,因为这不是一个好主意。我确实编写了一个上下文驱逐舰,但它不起作用:

public void contextDestroyed(ServletContextEvent servletContextEvent)  { 
    ServletContext servletContext = servletContextEvent.getServletContext();
    DatabaseController db_controller = (DatabaseController) servletContext.getAttribute("db_controller");
    db_controller.closeConnection();
}

感谢。

0 个答案:

没有答案