Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在servlet中进行清理的正确方法_Java_Jakarta Ee_Web Applications_Servlets - Fatal编程技术网

Java 在servlet中进行清理的正确方法

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方法中的

我需要在我的web应用程序(Tomcat 7)中发布一些资源。
我尝试在我的
servlet的
destroy
中执行此操作
问题是,当我在我的
destroy
中执行
getServletContext()
时,什么都不会发生。
通过调试,我成功地看到:

java.lang.NullPointerException 位于javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)

源自my
servlet
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()
      将上下文存储在实例变量中

    这与我的问题有什么关系?