WebSphere 集群上带有 TimerManager 的单例

发布于 2024-09-01 11:31:28 字数 86 浏览 4 评论 0原文

如何让 WebSphere 集群上的计时器任务执行一次且仅执行一次?我知道这在其他应用程序服务器上是可能的,但不知道如何在 WebSphere 中执行此操作。

How can I get a timer task on a WebSphere cluster to execute once and only once? I know this is possible on other app servers but can't figure out how to do this in WebSphere.

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

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

发布评论

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

评论(4

指尖上得阳光 2024-09-08 11:31:28

您可以使用WebSphere 的Scheduler 服务来执行您想要的操作。
如果您在集群范围内定义调度程序服务,则每个集群成员将运行调度程序守护程序,但任务数据库将被共享,这意味着只有其中一个成员将执行您添加的任务。
它们每 30 秒轮询一次数据库(可配置),第一个看到该任务的人将执行该任务。

http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/welc6tech_sch_adm.html

请记住,EJB 3.1提供的新功能可能会帮助您做您想做的事情,但这仅限于 WAS 8。

You can use WebSphere's Scheduler service to do what you want.
If you define a scheduler service in the cluster scope, each cluster member will run a scheduler daemon but the tasks DB will be shared, meaning only one of them will perform the task you add.
They poll the DB every 30 seconds (configurable) and the first on to see the task will perform it.

http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/welc6tech_sch_adm.html

Keep in mind that EJB 3.1 offers new features that might help you do what you want, but this is WAS 8 only.

还给你自由 2024-09-08 11:31:28

我不确定你的问题是集群问题还是其他问题。但是,如果您想在一次执行后停止 TimerListener,您只需使用输入的计时器变量并将其取消即可。

例如:

public static class MyTimer implements TimerListener {
     public void timerExpired(Timer timer) {    
         timer.cancel();
     }
}

如果您在集群环境中遇到问题,每个实例运行一次任务,那么我很抱歉发布这个简单的答案。

I'm not sure if your problem is a cluster or something else. But if you want to stop a TimerListener after one execution you would just use the inputed timer variable and cancel it.

Ex:

public static class MyTimer implements TimerListener {
     public void timerExpired(Timer timer) {    
         timer.cancel();
     }
}

If you are having a problem with the cluster environment running the task once per instance than my apologies for posting this simple answer.

一身骄傲 2024-09-08 11:31:28

您可能应该阅读此解决方案来评估它是否适合您的情况。

You probably should read this solution to evaluate whether it fits your situation.

绝對不後悔。 2024-09-08 11:31:28

也许你可以使用 terracotta / ehcache 锁定? http://www.ehcache.org/documentation/2.4/terracotta/explicit-locking

may be you can use terracotta / ehcache locking? http://www.ehcache.org/documentation/2.4/terracotta/explicit-locking

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