Java 在servlet中进行清理的正确方法
我需要在我的web应用程序(Tomcat 7)中发布一些资源。Java 在servlet中进行清理的正确方法,java,jakarta-ee,web-applications,servlets,Java,Jakarta Ee,Web Applications,Servlets,我需要在我的web应用程序(Tomcat 7)中发布一些资源。 我尝试在我的servlet的destroy中执行此操作 问题是,当我在我的destroy中执行getServletContext()时,什么都不会发生。 通过调试,我成功地看到: java.lang.NullPointerException 位于javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125) 源自myservlet的destroy方法中的
我尝试在我的
servlet的destroy
中执行此操作
问题是,当我在我的destroy
中执行getServletContext()
时,什么都不会发生。
通过调试,我成功地看到:
java.lang.NullPointerException
位于javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)
源自myservlet
的destroy
方法中的my行getSerlvetContext()
所以现在,我不知道如何在我的web应用程序中进行清理。
我已经在ServletContext
中存储了一些资源,以便可以从我的应用程序中的任何位置以及据我所知使用它
资源清理也应该进行
1) 在servlet的destroy
或
2) ServletContextListener的contextdestromed
但这两种方法似乎都不能正常工作。在案例(1)中,我在尝试访问servlet上下文时得到NullPointerException
。
在案例(2)中,web应用程序已经关闭,因此如果我有静态方法负责执行,例如重新分配DB连接等,那么类(正如我所理解的问题)已经由JVM卸载,因为web应用程序已经关闭
我做错什么了吗?我该怎么办?满怀希望。实际上,您不必担心TOMCAT/J2EE应用程序进程的清理过程。如果您对此感兴趣,只需删除/清除Catalina临时目录。删除/清除所有工作数据并使应用程序成为新的非常简单。实际上,当您运行web应用程序时,TOMCAT会创建一个临时工作目录安装文件夹中的目录。因此,请按照以下步骤操作:-
步骤:-
阻止你的雄猫
转到tomcat目录(C:\Program Files\Apache软件基金会\tomcat 5.5)
查找工作文件夹并删除(shift delete)
现在再次启动tomcat,享受新的应用程序
有一个愉快的编程与TOMCAT。任何其他关注我的博客
感谢获得ServletContext
,通常的方法是将其存储在实例变量中。根据您是扩展Servlet
还是实现ServletContextListener
,我建议为上下文创建一个实例变量,然后从以下方法之一存储它:
ServletContextListener.contextInitialized(ServletContextEvent sce)
:使用sce.getServletContext()
获取上下文的引用,然后可以将其存储在实例变量中
HttpServlet.init(ServletConfig)
:使用config
参数调用超级方法(init
),以便以后可以使用getServletContext()
访问它。如果这不起作用,可以使用config.getServletContext()
将上下文存储在实例变量中
这与我的问题有什么关系?