我有一些代码,我想只允许一个线程访问。我知道如何使用块或方法来完成此操作,但是这会在群集环境中工作吗?跨群集共享Java同步块,或使用全局锁?
目标环境是WebSphere 6.0,集群中有2个节点。
我有一种感觉将无法正常工作,因为每个节点上的应用程序的每个实例都将有它自己的JVM,对吧?
我在这里要做的是在系统启动时对数据库记录执行一些更新。它将查找比代码版本更旧的任何数据库记录,并执行特定任务来更新它们。我只希望一个节点执行这些升级,因为我想确保每个工作项目只升级一次,并且这些升级的性能并不是一个大问题,因为它只发生在应用程序启动时,并且它只是真的做任何事情代码自上次启动以来已更改。
数据库是DB2v9,我直接通过JNDI(无ORM层)访问它。
有人建议,全局锁定可能是这里的方法,但我不知道该怎么做。
有没有人在这个舞台上有任何指针?
谢谢!
我认为你将不得不在你的问题上更具体。你想要协调什么行动? – 2009-08-04 17:28:24
@Software Monkey-当然,对不起。我刚添加了一段解释我的意图。请让我知道如果它仍然不清楚。 – pkaeding 2009-08-04 17:38:15
那么你真正想要的是一个全局锁。我不知道websphere,所以我不能帮助在这里,但寻求帮助创建一个锁可能会更多的响铃与那些谁:) :) – bdonlan 2009-08-04 17:39:36