2012-02-08 5 views
0

Я работаю с кластеризованной средой WebLogic 10.3.5. Мое приложение включает в себя таймер EJB, для которого я реализовал поддержку, как в следующем example. Таймер создается для одного кадра с определенным таймаутом, затем создается снова, когда он закончил свою работу. Другими словами:Повторяющиеся записи таймера в WEBLOGIC_TIMERS

  • создать таймер с (скажем) 5 минут тайм-аут
  • пожаров таймер и начинает свою работу
  • работа заканчивается, и новый таймер создается с тем же периодом

Насколько я знаю, таймеры с одним выстрелом автоматически отменяются сервером приложений при их запуске.

Я имею дело с очень серьезной проблемой, потому что теперь у меня есть огромное количество экземпляров таймера. В таблице WEBLOGIC_TIMERS я нахожу много записей вместо одного. Все они имеют другое значение START_TIME и INTERVAL = -1.

Это производственная среда, поэтому у меня мало или вообще нет доступа к ней. Узлы Weblogic были перезапущены, но ничего не изменилось.

Как я могу это решить? Могу ли я просто удалить строки из WEBLOGIC_TIMERS?

+0

Дополнительная информация об этом странном поведении. Попросив экземпляр таймера о его следующем тайм-ауте и оставшемся времени (методы getNextTimeout() и getTimeRemaining() в javax.ejb.Timer), я получаю соответственно дату в прошлом и около 24 часов. СУБД находится на другом сервере, чем кластер Weblogic, поэтому я попросил кого-то проверить различия в системных датах. Сервер Oracle на несколько минут раньше, чем серверы weblogic. Может ли это объяснить? И как ? – prepetti

ответ

1

Ну, оказалось, что даже небольшие различия в системных датах между кластерными серверами weblogic и серверами dbms могут вызвать описанную проблему. После того, как они синхронизированы сисадминами, проблема исчезла.

Смежные вопросы