java - 如何协调部署到 WebLogic 集群中多个服务器的单个 ejb 计时器?

标签 java jakarta-ee glassfish ejb weblogic

所以,我有一个 Web 客户端和一个 EJB 计时器,它们是分开部署的。

工作流程如下:

1) 用户访问客户端。 2) 用户请求执行一个已知会长时间运行的操作,因此我们将运行该进程的请求写入数据库表中。 3) TimerOne 每隔几秒检查一次这个表,看是否有任何等待任务,所以它找到用户的请求并运行任务。

我的问题是,在我们的应用程序运行的某些环境中,我们正在利用服务器集群。当我们这样做时,客户端和 EJB 计时器都会部署到集群中的每个服务器。

客户端部署到多个服务器上是可以的,因为它有助于减轻工作量;但是,让计时器在多个服务器上运行是一个问题。当用户请求运行一个长时间运行的任务时,两个定时器同时从数据库中抓取任务并开始运行它。由于长时间运行的作业通常会写入数据库,因此这种情况会导致冲突等问题。

我的目标是能够将我的 EJB 定时器部署到两台服务器上,但要在集群中维护一些状态,定时器可以使用这些状态来决定它们是否应该接手任务,或者是否应该接管其中一个任务其他实例已经将其拾取。

我尝试为此使用数据库并尝试文件存储,但这些要么太慢,要么我无法提出用于同步的防弹工作流。

有谁知道处理这个问题的好方法吗?有可能吗?

该解决方案应该能够在集群 WebLogic 域、非集群 WebLogic 域、集群 Glassfish 域和非集群 Glassfish 域上运行。

如果有其他更优雅的解决方案,我愿意改变这样做的方式。

感谢任何想法!

最佳答案

关于java - 如何协调部署到 WebLogic 集群中多个服务器的单个 ejb 计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21441578/

相关文章:

java - 使用 JUnit 测试服务器

java - JUnit 测试 JSON 响应时出现断言错误

java - 当项目转换为可执行 jar 时,序列化文件不起作用?

java - 剥离的 JAR(方法没有字节码)是什么意思?

java - NetBeans8 不再为 GlassFish 的输出日志着色

java.lang.RuntimeException : Could not generate dummy secret at sun. 安全.ssl.RSAClientKeyExchange.<init>

java - 使用GridLayout时如何在JPanel底部添加ScrollBar?

java - 如何在 scriptlet 标签中获取 jsp 页面的某些组件的值?

java - 如何在 OGS 中实现 session Bean 的集群、负载平衡和故障转移

java - 来自 Jersey 2.x 的过多警告消息