首先查看是否是端口沖突引起,在日志信息該錯誤位置往上找,如果再無錯誤信息,而只有該錯誤,則原因可能如下:
原因:
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
中文翻譯如下:
解決方法:
package com.zang.util; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.logicalcobwebs.proxool.ProxoolFacade; /* * 此類用來處理 在class類進行修改的時候 保存了之后服務自動重新啟動 報: * 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 */ public class HouseKeeperServlet extends HttpServlet { private static final long serialVersionUID = 4829418704873725291L; public void destroy() { //此處添加處理 ProxoolFacade.shutdown(0); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
在web.xml中加入
<servlet> <servlet-name>loadServlet</servlet-name> <servlet-class>com.zang.util.HouseKeeperServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>