У меня есть код, доступ к которому я хочу разрешить только одному потоку. Я знаю, как этого добиться, используя synchronized
блоки или методы, но будет ли это работать в кластерной среде?
Целевой средой является WebSphere 6.0 с 2 узлами в кластере.
У меня такое ощущение, что synchronized
не будет работать, поскольку каждый экземпляр приложения на каждом узле будет иметь свою собственную JVM, верно?
Я пытаюсь выполнить некоторые обновления записей базы данных при загрузке системы. Он будет искать любые записи базы данных, которые старше, чем версия кода, и выполнять конкретные задачи для их обновления. Я хочу, чтобы только один узел выполнял эти обновления, так как я хочу быть уверен, что каждый рабочий элемент обновляется только один раз, и производительность этих обновлений не представляет большой проблемы, так как это происходит только при запуске приложения, и оно только действительно что-то делает когда код был изменен с момента последнего запуска.
База данных - DB2v9, и я обращаюсь к ней напрямую через JNDI (без уровня ORM).
Было высказано предположение, что здесь можно использовать глобальную блокировку, но я не уверен, как это сделать.
Есть ли у кого-нибудь указатели на этой арене?
Спасибо!