首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetty中的计划任务

Jetty中的计划任务
EN

Stack Overflow用户
提问于 2011-02-11 00:12:32
回答 3查看 5.6K关注 0票数 3

我想写一个简单的Groovlet,它定期运行任务,并使用Jetty容器。完成这项任务的最简单方法是什么?我在考虑应该使用Quartz,但我不确定它如何与Jetty集成。是否需要创建用于启动和停止任务的控制面板?有没有什么简单的例子可以让我开始呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-11 00:24:38

您必须创建作业配置文件"jobconf.xml“或属性文件,必须在其中配置作业。此文件必须添加到应用程序的类路径或jetty的类路径中。

您必须将QuartzInitializer添加到web.xml和servlet参数中,如下所示:

代码语言:javascript
复制
<web-app>
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<display-name>Quartz Initializer Servlet</display-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>config-file</param-name>
<param-value>quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</init-param>

</servlet>

<servlet>
<servlet-name>first</servlet-name>
<servlet-class>com.v2sol.StartQuartz</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/fst</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>one</servlet-name>
<servlet-class>com.v2sol.ExcelDBServlet</servlet-class>
<init-param>
<param-name>cronExpr</param-name>
<param-value>0,30 * * ? * MON-FRI</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>one</servlet-name>
<url-pattern>/excel</url-pattern>
</servlet-mapping>


</web-app>

和servlet中的使用调度程序:

代码语言:javascript
复制
System.out.println("Initializing Scheduler PlugIn for Jobs!");
super.init(config);
ServletContext ctx = config.getServletContext();
Scheduler scheduler = null;
StdSchedulerFactory factory = (StdSchedulerFactory) 
ctx.getAttribute(QuartzInitializerServlet.QUARTZ_FACTORY_KEY);  

try {   
scheduler = factory.getScheduler();
JobDetail jd = new JobDetail("job1", "group1",ExcelJob.class);  
CronTrigger cronTrigger = new CronTrigger("trigger1","group1");
String cronExpr = null;
cronExpr = getInitParameter("cronExpr");
System.out.println(cronExpr);   
cronTrigger.setCronExpression(cronExpr);
scheduler.scheduleJob(jd, cronTrigger);
System.out.println("Job scheduled now ..");

} catch (Exception e){
e.printStackTrace();
}
票数 2
EN

Stack Overflow用户

发布于 2011-02-11 00:37:35

比Quartz更简单的解决方案是使用JDK提供的Timer和TimerTask类。它们没有提供广泛的调度选项,但如果您只想以固定的时间间隔运行任务,它们应该就足够了。

如果您需要一个控制台来停止启动任务,则需要自己编写该控制台,或者编写一个JMX bean来提供对计时器的访问并使用JMX控制台调用它。

票数 5
EN

Stack Overflow用户

发布于 2011-02-11 00:17:50

创建Quartz调度器并将其放入应用程序上下文中。任何Groovlet都可以访问它,并能够提交新任务和操作正在运行的任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4959611

复制
相关文章

相似问题

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