@ Запланированный аннотированный метод не вызывается в GlassFish 2.1 и EJB 3 - PullRequest
2 голосов
/ 10 августа 2011

В моем компоненте без сохранения состояния у меня есть следующие строки:

@Schedule(minute="*/2", hour="*")
public void doSomething() {}

Я ожидаю, что этот метод будет вызываться каждые 2 минуты, но когда я его разверну, ничего не произойдет.Кроме того, если я добавлю @Schedule в bean-компонент, и ни один клиент не вызовет какие-либо методы этого bean-компонента (экземпляр bean-объекта еще не создан), будет ли контейнер или что-нибудь вызывать этот метод каждые 2 минуты?

Впервые я использовал аннотацию @Schedule, я был бы очень признателен, если бы кто-нибудь дал мне несколько советов по этим вопросам.

С наилучшими пожеланиями,

Джеймс Тран

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Я использовал NetBean 6.7.1 с Java EE 5 и GlassFish v2.1. После того, как я установил NetBean 7.0.1 с Java EE 6 и GlassFish v3.1 и использовал его для развертывания моего приложения, аннотация @Schedule могла наконец работать должным образом.

1 голос
/ 10 августа 2011

Здесь - ссылка на службу таймера из документов EE 6.

Обратите внимание на соответствующую часть -

Автоматические таймеры создаются контейнером EJBпри развертывании корпоративного компонента, содержащего методы, аннотированные аннотациями @Schedule или @Schedules. Корпоративный компонент может иметь несколько методов автоматического тайм-аута, в отличие от программного таймера, который позволяет использовать только один метод, аннотированный аннотацией @Timeout вкласс корпоративного бина.

Вы можете попробовать выполнить автоматическое планирование из ejb-jar.xml вместо использования @Schedule, если это имеет какое-то значение.Судя по всему, я не вижу ничего плохого в том, как вы его настроили, за исключением, может быть, попытки

@Schedule(minute="0/2", hour="*")

РЕДАКТИРОВАНИЕ См. Комментарий @bkails ниже.Это, вероятно, ничего не купит.

...