首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道某个特定的作业是否正在使用quartz和jboss seam运行?

如何知道某个特定的作业是否正在使用quartz和jboss seam运行?
EN

Stack Overflow用户
提问于 2013-03-16 02:28:16
回答 1查看 1.2K关注 0票数 0

我正在使用Jboss-seam 2.2.2,using和我有一些石英工作。在应用程序执行期间,我必须验证是否有特定的作业正在运行。

我已经有权访问这些作业,但每个作业都有一个由quartz创建的名称。下面是seam注入的代码:

代码语言:javascript
复制
    @In("org.jboss.seam.async.dispatcher")
    private QuartzDispatcher quartzDispatcher;

为了获得正在运行的作业,我有以下代码:

代码语言:javascript
复制
    Scheduler scheduler = quartzDispatcher.getScheduler();
    List<JobExecutionContext> currentJobs;
    currentJobs = scheduler.getCurrentlyExecutingJobs();
    for (JobExecutionContext jobCtx: currentJobs){
        System.out.println(jobCtx.getJobDetail().getName());
    }

有谁知道如何使用jboss-seam为石英工作命名?我做了一些研究,在jira上找到了这张票:https://issues.jboss.org/browse/JBSEAM-4399

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-23 23:14:04

Seam为每个作业生成一个基于UUID的唯一名称,没有直接的方法覆盖它。您的替代方案是:

使用找到的补丁,这需要使用您自己的自定义调度程序构建一个自定义代码added.

  • Override OOTB quartz dispatcher的自定义接缝库,覆盖scheduleWithQuartzService方法并使用您自己的方案命名作业(查看org.jboss.seam.async.QuartzDispatcher的源代码,您将看到它调用了一个为作业生成新的唯一名称的nextUniqueName()方法,您需要从其他地方获取作业名称,最终通过尝试查看作业是否基于其名称运行的annotation).

  • Instead在您找到的补丁中以相同的方式完成,您可以创建一个实现org.quartz.JobListener的quartz事件侦听器,并在作业开始和结束执行时在全局哈希表或类似的东西中注册。然后在哈希表中查找作业以获取其状态,而不是按名称进行搜索。但是,这仅在您的调度程序未群集时才有效(quartz将仅通知本地节点中的侦听程序,其他节点不会知道作业已被触发)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15439658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档