使用Proxool連接池, 當在重啟Tomcat容器時,出現(xiàn)
Exception in Thread "HouseKeeper" java.lang.NullPointerException
空指針異常錯誤。
原因是:
寫道
This is because Proxool is not being shutdown properly. If the JVM stops then Proxool recognises that and shuts down gracefully, but if you redeploy Proxool into some environments (for example, a servlet container) then Proxool needs to be explicitly told so by calling ProxoolFacade.shutdown(). If you have a servlet container then you could put it in the servlet's destroy() method. Alternatively, use the ServletConfigurator to both configure and shutdown Proxool
解決方法如下:
1. 在Servlet的destroy()方法中顯式地proxool關(guān)閉連接池:ProxoolFacade.shutdown();
- public class ProxoolServlet extends HttpServlet {
- public void init() throws ServletException {
- }
-
- public void destroy() {
- ProxoolFacade.shutdown();
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws
- ServletException, IOException {
- doGet(request,response);
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws
- ServletException, IOException {
-
- }
-
- }
public class ProxoolServlet extends HttpServlet {public void init() throws ServletException {}public void destroy() {ProxoolFacade.shutdown();}public void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {doGet(request,response);}public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {}}
2. 將該Servlet配置到web.xml中:
- <servlet>
- <servlet-name>proxoolServlet </servlet-name>
- <servlet-class>xxx.ProxoolServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
<servlet><servlet-name>proxoolServlet </servlet-name><servlet-class>xxx.ProxoolServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>
3. OK