Mat*_*ska 2 osgi quartz-scheduler
我有一个OSGI调度程序包,其中包含Quartz Scheduler Jar.此捆绑包仅向其他捆绑包公开应用程序接口,并在注册新作业时将其包装到temporaryJob(实现StatefulJob)并使用调度程序进行调度.
通过这种方式,我不必公开Quartz Scheduler jar(它不是那么多的osgi兼容).这种方法的问题在于,由于StatefulJob避免并行执行作业而我只有一个实际作业(temporaryJob),所以我的所有实际作业一次运行一个.
不幸的是,标记界面似乎是唯一可以说该作业是有状态的方式.我能找到的唯一解决方案是让守护进程公开StatefulJobInterface(删除假工作),但这样做,我遇到了很多类路径问题.有一个更简单的解决方案吗?
使用真正的Quartz OSGi包,例如这里提供的包:
http://ebr.springsource.com/repository/app/bundle/detail?name=com.springsource.org.quartz
最新的Quartz版本有1.6.2.如果您需要更新的版本,使用bnd或bundlor构建自己的捆绑包非常容易.
然后,您可以在OSGi环境中的任何位置公开StatefulJob作为服务,并让您的调度程序包注册并使用Quartz注销这些作业.更好的是,让调度程序包监听任何围绕触发器和作业信息的包装的服务,例如Spring CronTriggerBean或SimpleTriggerBean.这条路,
1)您的内部API/OSGi服务不是特定于Quartz的 - 只有调度包依赖于Quartz包,并且
2)您的应用程序包可以确定作业的计划而不是计划捆绑包试图找出它.
更新:ServiceMix项目提供了更新的Quartz OSGi包:http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.quartz/
| 归档时间: |
|
| 查看次数: |
7377 次 |
| 最近记录: |