我有一个使用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> 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();
}
感谢。