0

我们在服务器上运行了多个 weblogic 实例。所有这些实例只访问一个数据库。

其中一张表存储了我们需要处理的请求。问题是不止一个 weblogic 可以在给定时间访问数据库,并且可以选择请求并处理它。由于这个请求被多次处理并产生问题。

这些在数据库中创建一个额外的属性是没有用的,该属性存储该记录是否被处理的标志,因为 2 weblogic 可以同时访问该记录。

访问数据库的代码是 Java,但没有使用同步该部分,因为每个 weblogic 都有单独的代码副本。

请建议我们如何确保多个正在运行的 weblogics 只处理一次记录。

4

1 回答 1

1

好吧,答案取决于您如何使用休眠或简单 JDBC 之类的 API 访问数据库。您可以做的一件事是,您可以通过会话管理此会话。一旦记录被访问,它就变成了DIRTY,因此下次不会被访问。您肯定需要添加一些机制来让您的应用程序知道“哪些请求已处理,哪些未处理”。

2 weblogic 可以同时访问该记录。

这对我来说似乎很可怕,所以,你需要确保原子性。我想,(不确定)当一个网络逻辑访问它时,它会占用事务锁定。另一个 Web 逻辑应该有相同记录的另一个新副本,确实是在释放锁定之后)。

希望这可以帮助。

于 2013-07-31T07:21:08.123 回答