Как включить планирование Quartz в Jboss AS 7.0? - PullRequest
3 голосов
/ 19 июля 2011

Кварц не включен в стандартную установку Jboss AS 7.0 Final (полная версия).Развертывание моего EAR, по-видимому, завершается неудачно при попытке загрузки управляемого сообщениями компонента (MDB) «FareMonitorBean».Этот MDB - то, что выполняет расписание кварца.

Сообщение об ошибке:

10:00:34,034 WARN  [org.jboss.modules] (MSC service thread 1-7) Failed to define class com.myproject.beans.FareMonitorBean in Module "deployment.myprojectEAP.ear.myprojectEJB.jar:main" from Service Module Loader: java.lang.LinkageError: Failed to link com/myproject/beans/FareMonitorBean (Module "deployment.myprojectEAP.ear.myprojectEJB.jar:main" from Service Module Loader)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:401)
.....
Caused by: java.lang.NoClassDefFoundError: org/quartz/Job
at java.lang.ClassLoader.defineClass1(Native Method) [:1.6.0_26]
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) [:1.6.0_26]
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) [:1.6.0_26]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) [:1.6.0_26]
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:397)
... 18 more

Сводка файла класса MDB "FareMonitorBean":

@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "cronTrigger", propertyValue = EJBConstants.FARE_MONITOR_QUARTZ_SCHEDULE_STRING) })
@ResourceAdapter("quartz-jboss-2.0.2.jar")
public class FareMonitorBean implements Job {

    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        ....
    }
}

Основано на документации JBoss , мое предположениеявляется то, что "Расширение" и "Подсистема" должны быть настроены для Кварца в standalone / configuration / standalone.xml, однако я не уверен, как это сделать.Я искал Google, форумы Jboss, Doco поддержки кварца и не могу найти ничего.Мне кажется немного бедным, что Quartz не работает с «финальным» выпуском Jboss, так как, несомненно, планировщик является распространенной и обязательной функцией полноценного сервера приложений ?!

Любые предложения или примеры, которые я мог бы использовать, чтобы заставить его работать?


ОБНОВЛЕНИЕ 28 августа 2011 года:

Может кто-нибудь помочь мне с этим вопросом?У меня проблемы со стабильностью и многочисленные ошибки в JBoss 6.0, и я думаю о переходе на GlassFish 3.1, если Jboss продолжает оставаться сложной задачей.Это только я или Jboss просто полон ошибок и проблем?!

1 Ответ

4 голосов
/ 28 июля 2011

NoClassDefFoundError может быть связано с отсутствующей зависимостью.Кварцевый jar-файл доступен в вашем jboss?Может быть, эта документация поможет: https://docs.jboss.org/author/display/AS7/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7#HowdoImigratemyapplicationfromAS5orAS6toAS7-HowtoResolveClassNotFoundExceptionsandNoCLassDefFoundErrors

Вот мой обходной путь для использования кварца в JBoss 7:

К сожалению, AS7 Final не поддерживает аннотацию @Schedule (см. Выпуск JBoss AS7-1158)

Итак, я упаковал кварцевую банку через зависимости maven с моим файлом EAR.

Затем я использую этот запускающий компонент, чтобы добавить задания и запустить планировщик, как описано в примерах кварца: http://quartz -scheduler.org / docs / examples / index.html

@Singleton
@Startup
public class StartupBean
{

    @PostConstruct
    private void scheduleJobs()
    {
         // Exception Handling omitted
         final Scheduler sched = new StdSchedulerFactory().getScheduler();
         sched.scheduleJob( createJob(), createTrigger());
         sched.start();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...