我需要在我的Web应用程序中释放一些资源(Tomcat 7)
我尝试在destroy
的{{1}}中进行此操作
问题是,当我在servlet
中getServletContext()
时,没有任何事情发生
通过调试我设法看到:
显示java.lang.NullPointerException 在javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)
来自我destroy
getSerlvetContext()
方法中的destroy
行。
所以现在,我不知道我应该如何在我的网络应用程序中进行清理
我已经在servlet
中存储了一些资源,因此可以在我的应用程序的任何地方使用它,据我所知
资源清理应该完成
1)在ServletContext
或destroy
中
2)servlets
contextDestroyed
但这些似乎都不合适。如果(1)我在尝试访问servlet上下文时得到ServletContextListener
在情况(2)中,Web应用程序已经关闭,因此如果我有静态方法负责执行例如由于Web应用程序已经关闭,因此JVM已经卸载了DB连接的重新分配等类(因为我已经理解了这个问题)。
我做错了吗?我该怎么办?
答案 0 :(得分:3)
要获取ServletContext
,通常的方法是将其存储在实例变量中。根据您是扩展Servlet
还是实现ServletContextListener
,我建议为上下文创建一个实例变量,然后将其存储在以下方法之一中:
ServletContextListener.contextInitialized(ServletContextEvent sce)
:使用sce.getServletContext()
获取上下文的引用,然后可以将其存储在实例变量中。HttpServlet.init(ServletConfig config)
:使用init
参数调用超级方法(config
),以便稍后使用getServletContext()
访问它。如果这不起作用,您可以使用config.getServletContext()
将上下文存储在实例变量中。答案 1 :(得分:-5)
带着希望。真的你不用担心TOMCAT / J2EE应用程序进程的清理过程。如果你有兴趣这样做,那么只需删除/清除Catalina临时目录。删除/清除所有工作数据并使你的应用程序成为新的非常简单。实际上,当您运行Web应用程序时,tomcat会在安装文件夹中创建一个临时工作目录。所以,请按照以下步骤操作: -
步骤: -
现在再次启动tomcat&享受新的应用程序。
使用TOMCAT快乐编程。其他人也可以关注我的博客。
由于