我正在使用JBoss AS 6编写Java EE应用程序,其中有一个资源需要独占访问(第三方软件的某个接口)以获取给定参数的方法。目前我在处理锁定时有些不当(因为规范禁止这样做),我正在使用
现在,我将多个JBoss应用程序服务器集群在一起,因此需要跨集群中的不同节点工作的解决方案。我认为至少有以下几种选择。
java.util.concurrent.ReentrantLock
。现在,我将多个JBoss应用程序服务器集群在一起,因此需要跨集群中的不同节点工作的解决方案。我认为至少有以下几种选择。
- 共享缓存(Infinispan)
- JGroups
- 基于文件系统的锁定(可能不好,但我们仍然依赖于共享文件系统)
- 数据库
- Singleton EJB's?
public class MyEJBBean {
private SharedLock lock;
public void doSomethingWithSharedResource(String s) {
lock.lock(); // blocks until shared resource is not used by anyone else
try {
// Use shared resource
}
finally {
lock.unlock();
}
}
我有没有错过任何选项?有没有人有这种锁定机制的经验可以分享?