控制 Servlet 何时终止

发布于 2024-11-04 17:08:29 字数 550 浏览 0 评论 0原文

我有一些配置存储在 servlet 上下文中,在 servlet 之间共享。当前的方法是在调用任何 servlet 的 init() 方法时将配置加载到 servlet 共享的静态哈希图的单个副本中。但问题是 servlet 不会消失,因此即使我更改了 servlet 上下文中的配置,配置也不会重置。因为 servlet 永远不会再次调用 init(),所以它们不会将配置重新加载到 hashmap 中。

我使用的是 websphere 7,有什么地方可以配置 servlet 何时终止以及新的 servlet 何时诞生?

我认为当有新请求时从 servlet 上下文重新加载配置太笨拙了。


编辑: 我有一个调度程序,它将创建一个新线程来检查特定数据文件,如果数据文件是新的,它将创建一个哈希图(包含数据文件的内容)作为 servlet 上下文中的属性。

现在,servlet 将检查 hashmap 的 servlet 上下文,并将其复制到静态 hashmap,以便在刚刚创建并调用 init() 时在 servlet 之间共享使用。但问题是servlet在执行过程中不会死掉,它只会使预定的动作不起作用。

I have some configuration stored in the servlet context, sharing among servlets. The current approach is to load the config into a single copy of static hashmap shared by the servlets when the init() method of any servlet is called. But the problem is the servlets just won't die, so the configuration just won't reset even if I changed the configuration in the servlet context. Because the servlet never call init() again, they will not reload the configuration into the hashmap.

I am using websphere 7, is there any place I can configure when does a servlet die, and a new servlet is born?

I think it is too clumsy to reload the configuration from the servlet context when there is a new request.


Edit:
I have a scheduler which will create a new thread to check for a specific data file, if the data file was new, it will create a hashmap(with content of the data file) as an attribute in the servlet context.

Now the servlets will check for the servlet context for the hashmap and copy it to a static hashmap for shared use among servlets when they are just created and call init(). But the problem is that the servlet won't die during the execution, it just make the scheduled action not working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜清冷一曲。 2024-11-11 17:08:29

我使用的是websphere 7,有吗
我可以配置的地方
servlet 死了,一个新的 servlet 出现了
出生了吗?

不。

编辑:我有一个调度程序,它将
创建一个新线程来检查
特定数据文件,如果数据文件
是新的,它将创建一个哈希图(带有
数据文件的内容)作为
Servlet 上下文中的属性。

现在 servlet 将检查
哈希图的 servlet 上下文和
将其复制到静态哈希图以进行共享
在 servlet 之间使用
创建并调用 init()。但是
问题是 servlet 不会死掉
在执行过程中,它只是使
计划的操作不起作用。

将设置重构为单独的数据对象(而不是 HashMap 或 servlet 实例字段)以供 servlet 实例共享。更改调度程序/警报以直接更新共享数据对象。

I am using websphere 7, is there any
place I can configure when does a
servlet die, and a new servlet is
born?

No.

Edit: I have a scheduler which will
create a new thread to check for a
specific data file, if the data file
was new, it will create a hashmap(with
content of the data file) as an
attribute in the servlet context.

Now the servlets will check for the
servlet context for the hashmap and
copy it to a static hashmap for shared
use among servlets when they are just
created and call init(). But the
problem is that the servlet won't die
during the execution, it just make the
scheduled action not working.

Refactor the settings into a separate data object (rather than a HashMap or servlet instance fields) to be shared by servlet instances. Change the scheduler/alarm to update the shared data object directly.

◇流星雨 2024-11-11 17:08:29

为什么不将这些数据存储在 JNDI 中,以便 servlet 可以在需要时获取它?这样,您就可以完全控制数据; Servlet 生命周期将不再重要。

Why not store this data in JNDI, where the servlets can get it whenever they need it? That way, you have complete control of the data; the servlet lifecycle would no longer matter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文