Отключение таймера EJB (GlassFish 3.1, Java EE 6) - PullRequest
5 голосов
/ 18 августа 2011

У нас есть VIP (BIG-IP), который фактически перемещает запросы веб-службы на два узла, каждый со своим собственным сервером GlassFish 3.1 и развернутыми нашими службами. Так что это не настоящий кластер стеклянной рыбы. Моя проблема в том, что у меня много служб планировщика, таких как перечисленные ниже:

@Schedule(minute = "55", hour = "23", dayOfWeek = "Wed")
public void runScheduledMedicaidPaymentProcess() {

Можно ли отключить службу таймера EJB на одном узле, чтобы вышеуказанный метод не выполнялся на обоих узлах, когда в среду 23:55?

Я видел использование пула _Default для кластеров, упомянутых в документе сервера Glassfish, но, как я объяснил ранее, наш кластер не является истинным. Пожалуйста, дайте мне знать, если есть какой-либо способ остановить таймер на одном, чтобы он не активировался.

1 Ответ

2 голосов
/ 18 августа 2011

Если вы не используете кластер, то у вас просто есть два независимых экземпляра. Вам нужно будет создать своего рода семафор, который проверяет каждый метод (столбец БД может быть хорошим решением). Метод вернет, нормально ли запускать таймер. Каждый из ваших экземпляров будет вызывать метод, но только один экземпляр будет работать таймер.

Или ...

Настройка кластера.

...