JBoss服务器组导致竞争条件

时间:2014-02-07 09:22:46

标签: java multithreading jboss race-condition

我有一个使用交换网络服务java api轮询Microsoft Exchange邮箱的应用程序,它被配置为每5分钟轮询一次。我被要求在JBoss AS 7.1.1.FINAL上部署此应用程序,这是问题的开始。默认情况下,JBoss在组中运行多个服务器实例,这会导致竞争条件 - 我可以在服务器日志中看到服务器 - 一个成功处理消息而server-two抛出异常:

microsoft.exchange.webservices.data.ServiceResponseException: The specified object was not found in the store.

在Microsoft文档中几乎没有提到。换句话说,我真的不知道问题是什么。我尝试使用轮询邮箱同步的方法,但它并不起作用,因为所有服务器实例都使用单独的JVM。但是,当我从主组中删除服务器实例时(因此当时只运行了一个实例)问题已经消失,遗憾的是我无法在我将部署的JBoss上执行此操作。

所以问题:当同步方法似乎不起作用而我无法改变JBoss配置时,如何解决竞争条件问题? (如果周围没有别的办法,也许我可以)。

1 个答案:

答案 0 :(得分:0)

在我看来,您在网络中有多个JBoss实例,并且它们位于群集中。如果是这样,那么您可能希望使用群集单例功能,在群集的所有服务器上进行部署,但是从一个节点执行服务。看一下JBoss Developer Framework documentation中的“cluster-ha-singleton”示例。