Рекомендации по использованию таймера EJB - PullRequest
0 голосов
/ 13 сентября 2011

Я хочу запланировать работу, которая будет читать некоторые объекты, вызывать некоторые из них и записывать / обновлять некоторые объекты. Эта работа должна быть обработана после луны, например, в 01:00. У меня есть 2 проблемы по этому вопросу. Во-первых, планировщик принимает постоянные параметры, мое требование заключается в том, что планировщик должен быть настраиваемым через некоторый пользовательский интерфейс. Есть ли подходящий способ сделать это? В противном случае мне приходится настраивать планировщик, например, каждые 30 минут, а внутри метода мне приходится искать значения переменных времени независимо от того, соблюдаются они или нет. Вторая проблема заключается в том, что внутри метода Scheduler запускается пользовательская транзакция, и когда я вызываю метод, который вызывает utx.start, я получаю "поток уже связан с транзакцией!" эксп. Что мне делать? Рекомендация пожалуйста. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

Если вы хотите создать переменные выражения расписания, вам нужно получить TimerService (например, @Resource Timerservice _timerService), а затем использовать метод createCalendarTimer, который вызовет ваш метод @Timeout.Расписание таймера является неизменным, поэтому пользовательский интерфейс должен будет использовать getTimers (), чтобы найти / отменить существующий таймер (возможно, путем сопоставления getInfo ()) перед созданием нового.

@ Timeout методы наследуют возможности транзакциивмещающего боба.Если компонент использует транзакции, управляемые контейнером, UserTransaction не будет работать.

0 голосов
/ 13 сентября 2011

Вы можете предоставить управляемый компонент для управления этим таймером через консоль JMX.

Для вашей второй проблемы, похоже, вы сконфигурировали транзакции для управления контейнером.Затем, когда метод запускается, транзакция запускается автоматически.Вы можете отключить это автоматическое управление или, что еще лучше, избежать программного управления и позволить контейнеру управлять транзакциями.

...