如何在JBossAS7.0中启用Quartz调度?

如何在JBossAS7.0中启用Quartz调度?,jboss,jboss7.x,quartz-scheduler,Jboss,Jboss7.x,Quartz Scheduler,Quartz似乎没有作为7.0最终版(完整版)包含在Jboss的默认安装中。当试图加载消息驱动Bean(MDB)“FareMonitorBean”时,my EAR的部署似乎失败。此MDB是quartz计划执行的 错误消息: 10:00:34,034 WARN [org.jboss.modules] (MSC service thread 1-7) Failed to define class com.myproject.beans.FareMonitorBean in Module "depl

Quartz似乎没有作为7.0最终版(完整版)包含在Jboss的默认安装中。当试图加载消息驱动Bean(MDB)“FareMonitorBean”时,my EAR的部署似乎失败。此MDB是quartz计划执行的

错误消息:

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 {
        ....
    }
}
基于,我猜测需要在standalone/configuration/standalone.xml中为Quartz配置“扩展”和“子系统”,但是我不确定如何做到这一点。我搜索过谷歌、jboss论坛、quartz support doco,但什么都找不到。在我看来,Quartz不能与Jboss的“最终”版本配合使用似乎有点糟糕,因为调度器肯定是一个成熟应用服务器的常见且必需的功能

有什么建议或例子可以让它工作吗


2011年8月28日更新:


有人能帮我解决这个问题吗?我在JBoss6.0中遇到了稳定性问题和许多bug,如果JBoss继续成为一个具有挑战性的热门,我会考虑切换到GlassFish 3.1。只是我还是Jboss充满了bug和问题

NoClassDefFoundError可能与缺少依赖项有关。 quartz jar文件在jboss中可用吗?也许本文档有助于:

以下是我在JBoss7中使用quartz的变通方法:

不幸的是,AS7 Final不支持
@Schedule
注释(参见JBoss问题AS7-1158)

因此,我通过maven dependencies将quartz jar与EAR文件打包在一起

然后,我使用这个启动bean添加作业并启动调度程序,如quartz示例中所述:

@Singleton
@启动
公共类StartupBean
{
@施工后
私有void scheduleJobs()
{
//忽略异常处理
final Scheduler Scheed=new StdSchedulerFactory().getScheduler();
sched.scheduleJob(createJob(),createTrigger());
sched.start();
}
}

谢谢您的回答。我将尝试实施您的解决方案。但问题是:Jboss 7.0 Final没有任何quartz文件,那么您从哪里获得了使用Jboss 7的quartz jar文件?我使用Maven打包EAR文件:将quartz的依赖项放入pom.xml中,如下所述:。然后maven ear插件生成ear文件并将依赖项打包到ear中的lib目录中。我现在正在使用一个简单的EJB计时器Bean。