JIRA中设置定时任务

发表于:2018-6-07 10:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:临江仙·2007    来源:博客园

  是否曾想在JIRA里运行定时任务?为什么在用了JIRA后还需要定时任务?在之前的一个帖子里,我们已经介绍过如何编写服务。尽管我们介绍了它的所有优点,但是服务器还是有个缺点的。它必须在JIRA重启才能启动,在之后才能定期运行。如果你有一个任务,它需要做繁重的内存密集操作,当你在一天中午重启了JIRA后,你会突然发现你的示例性能受到损害!如果它被计划为每24小时运行一次,你会发现它总是在每天的中午运行,直到你下次重启JIRA。
  JIRA中的计划任务是一个可以确保所有类似操作会在恰当时间运行的好方法,比如在凌晨。在本贴中,我们会写一个实际的示例,看看实现它是多么容易。
  新建一个定时任务的第一步,是写一个java类并实现 Quartz Job接口。JIRA内部使用 Quartz 来定时运行它的任务,因此JIRA自带 Quartz。我们的定时任务只是在控制台打印一行信息,因此,我们编写的JAVA类向下面这样简单:
1 package com.jtricks;
2 import java.util.Date;
3 import org.quartz.Job;
4 import org.quartz.JobExecutionContext;
5 import org.quartz.JobExecutionException;
6
7 public class JTricksScheduledJob implements Job{
8   public void execute(JobExecutionContext context) throws JobExecutionException {
9     System.out.println("Running the job at "+(new Date()).toString());
10   }
11 }
  正如你所见,我们在做这里需要做的就是实现 execute 方法。不管如何,我们在这个方法中做的,既可以如上述代码只有一行代码这样简单,也可以像启动核爆炸一样复杂!
  下一步是让JIRA知道我们已经写好的新任务,并为它设置个定时。为此,我们首先需要新建一个jar文件,将它放到JIRA安装目录的WEB-INF/lib文件夹下。注意它并不是一个 v2 插件,因此将它放到 JIRA_HOME/plugins/installed-plugins路径下是无法正常工作的。
  JIRA存储定时任务的信息在WEB-INF/classes路径下的 scheduler-config.xml 文件中。我们需要在这个文件中定义新任务的时间表。 首先我们需要在jobs标签下定义一个job,如下:
  <job name="JTricksJob" class="com.jtricks.JTricksScheduledJob" />
  然后,我们需要添加一个触发器来运行 JTricksJob。在这一步,我们通过定义cron表达式实现在指定的时间内运行job。
<trigger name="JTricksJobTrigger" job="JTricksJob" type="cron">
<expression>0 0/2 * * * ?</expression><!-- run every 2 minutes -->
</trigger>
  上边这个定时器将每两分钟执行一次job。更多编写cron表达式的细节,可以查看 here。这样一来,一个计划任务就准备好了。现在我们唯一需要做的就是重启JIRA。
  JIRA重启之后,就可以在 Administration > Scheduler Details 页面中看到新创建的任务了。如下图,我们也可以在这个页面确认下任务的下次触发时间。
  
  当任务运行时,你将会看到控制台输出如下信息:
  
  这比我们想象的简单,不是吗?附件是我们刚才看到的简单代码和修改后的 scheduler-config.xml。去享受这个新技能吧!

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号