【问题标题】:Execute a piece of code in my Java web application during startup [duplicate]在启动期间在我的 Java Web 应用程序中执行一段代码 [重复]
【发布时间】:2018-06-29 12:48:44
【问题描述】:

我有一个基于 Web 的 Java 应用程序,我需要在 RAM 内存中存储少量数据以进行某种操作。我也将这些数据存储到数据库中。

现在,当我重新启动我的应用程序时,我需要再次将这些数据加载到 RAM 内存中(例如,我在 tomcat 中运行我的应用程序,因此在重新启动 tomcat 后,我​​需要将数据从数据库加载到内存中)。

为此我有一个功能,但问题是如何检测应用程序启动事件?

我知道 Java Spring 中有类似的东西,但在我的应用程序中我没有使用 Spring。

任何帮助都会对我有很大帮助。

如果需要更多数据,请告诉我。

提前致谢。

【问题讨论】:

  • 我不确定我是否理解正确:您的应用程序中确实定义了一个起始类,挂在那里?

标签: java tomcat web-applications


【解决方案1】:

如何检测应用程序启动事件?

声明并配置一个实现ServletContextListener的类。

ServletContextListener documentation 声明:

用于接收有关 ServletContext 的通知事件的接口 生命周期变化。

为了接收这些通知事件,实现 类必须在 web 的部署描述符中声明 应用程序,使用 WebListener 注释,或通过以下之一注册 在 ServletContext 上定义的 addListener 方法。

你可以在void contextInitialized(ServletContextEvent sce)方法中执行这些语句

收到有关 Web 应用程序初始化过程的通知 开始了。

为了可用,应该注册监听器。
在 Servlet 3.0 之前:在 web.xml 中声明它。
从 Servlet 3.0 开始:以前的方式或更好的方式是直接用 @WebListener 注释类。

【讨论】:

    【解决方案2】:

    看看 httpservlet init(ServletConfig) 方法。

    init(...) 在 servlet 初始化时被调用一次。

    https://docs.oracle.com/javaee/6/api/javax/servlet/GenericServlet.html#init()

    https://docstore.mik.ua/orelly/java-ent/servlet/ch03_03.htm

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 2017-06-10
      • 1970-01-01
      • 2019-07-20
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      相关资源
      最近更新 更多