Quartz 似乎不包含在 Jboss AS 7.0 Final(完整版)的默认安装中。尝试加载消息驱动 Bean (MDB)“FareMonitorBean”时,我的 EAR 部署似乎失败。这个 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 中为 Quartz 配置“扩展”和“子系统”,但是我不确定如何执行此操作。我搜索了 google、jboss 论坛、quartz support doco 并找不到任何东西。Quartz 不能与 Jboss 的“最终”版本一起工作,这对我来说似乎有点糟糕,因为调度程序肯定是成熟应用程序服务器的一个常见且必需的功能?!
我可以遵循任何建议或示例来使其正常工作吗?
2011 年 8 月 28 日更新:
有人可以帮我解决这个问题吗?我在使用 JBoss 6.0 时遇到了稳定性问题和大量错误,如果 Jboss 仍然是一个具有挑战性的尝试,我正在考虑切换到 GlassFish 3.1。只是我还是 Jboss 只是充满了错误和问题?!