【问题标题】:An approach for loading large resources on Java application start upJava应用启动时加载大资源的一种方法
【发布时间】:2013-05-29 18:57:12
【问题描述】:

我有一个托管在 Tomcat servlet 容器中的 Java 应用程序,它查询数据库并使用结果创建一个内存模型(非常大)。创建内存图的代码大约需要 3 分钟才能运行,因此我希望能够在应用程序启动时以及在用户访问应用程序之前执行此操作。

是否有典型的模式化方法可以做到这一点?

【问题讨论】:

  • 为什么这个模型在内存中?
  • 另外,您是否考虑过使用一些缓存解决方案,例如 ehcache?或者,更简单,Guava 的 LoadingCache?

标签: java tomcat


【解决方案1】:

推荐的方法是实现javax.servlet.ServletContextListener 并在contextInitialized(ServletContextEvent) 中运行您的代码。

然后将其添加到您的 web.xml

<listener>
 <listener-class>com.company.LoadEverythingINeedListener</listener-class>
</listener>

这将确保您的用户在您准备好之前不会访问您的应用程序。

【讨论】:

    【解决方案2】:

    您可以使用来自 servlet 的 &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; 参数,或者使用上下文侦听器来执行此操作。

    猜你喜欢
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2019-05-10
    • 2012-12-24
    • 2011-03-18
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多