Инъекция внутри Кварц Иов - PullRequest
0 голосов
/ 11 мая 2011

Я использую weblogic 11, ejb3.0

Я пытаюсь сделать Ejb-инъекцию внутри класса, который реализует Job (org.quartz.job) Безуспешно.

Итак, я подумал сделать свою работу классом бобов без гражданства. вот так:

 @Stateless(mappedName = "StartSyncJob")
 @Local(
  { StartSyncJob.class })
 public class StartSyncJob implements Job  
  ...

, а затем снова попробовал Ejb-инъекцию внутрь, но я получил исключение:

blogic.ejb.container.compliance.ComplianceException: бизнес-метод notify в классе java.lang.Object не должен быть объявлен как окончательный

Думаю, я не могу аннотировать класс, который реализует интерфейс Job.

любая другая идея, как я могу это сделать?

Моя основная цель - вызвать компонент без сохранения состояния, который существует в другом развертывании из моего класса Job.

1 Ответ

2 голосов
/ 11 мая 2011

Контейнер может внедрять только вещи, созданные / управляемые контейнером.

Кварц создает экземпляры заданий.

Следовательно, эти два не играют вместе как одна структура.

Вы можете создать свою собственную реализацию класса JobFactory в Quartz, чтобы управлять созданием задания - и ваша реализация может делегировать что-то еще, например, контейнер.

Кроме того, в вашей работе вы можетенайдите бин без гражданства и затем вызовите его.Кварц поставляется с EjbInvokerJob, который делает именно это (вызывает настроенный ejb при выполнении).

...