【发布时间】:2011-05-03 02:38:44
【问题描述】:
我有一些配置存储在 servlet 上下文中,在 servlet 之间共享。当前的方法是在调用任何 servlet 的 init() 方法时将配置加载到 servlet 共享的静态 hashmap 的单个副本中。但问题是 servlet 不会死掉,所以即使我在 servlet 上下文中更改了配置,配置也不会重置。因为 servlet 永远不会再次调用 init(),所以它们不会将配置重新加载到 hashmap 中。
我使用的是 websphere 7,有什么地方可以配置 servlet 什么时候死掉,什么时候新的 servlet 诞生?
我认为当有新请求时从 servlet 上下文中重新加载配置太笨拙了。
编辑: 我有一个调度程序,它将创建一个新线程来检查特定数据文件,如果数据文件是新的,它将创建一个 hashmap(包含数据文件的内容)作为 servlet 上下文中的属性。
现在 servlet 将检查 servlet 上下文中的 hashmap 并将其复制到静态 hashmap 以便在 servlet 刚创建时共享使用并调用 init()。但问题是 servlet 在执行过程中不会死掉,它只会使预定的操作不起作用。
【问题讨论】:
-
您能否更具体地说明您要在您的上下文中更改的内容?什么操作触发了这种变化?
-
好的,请稍等,请稍后再查看问题。
-
为什么要有一个“servlet 之间共享使用”的静态映射 - 为什么不直接使用
ServletContext?它实际上更像是一个“应用程序上下文”,因为它可以在您的应用程序中使用。 -
我想要一份它的副本,这样就不需要每次使用时都从servlet上下文中获取servlet上下文的属性了。