2011-02-10 5 views
3

정기적으로 작업을 실행하고 Jetty 컨테이너를 사용하는 간단한 Groovlet을 작성하고 싶습니다. 이 작업을 수행하는 가장 쉬운 방법은 무엇입니까? 나는 Quartz가 사용되어야한다고 생각하지만 그것이 Jetty와 어떻게 통합되는지 잘 모르겠습니다. 작업을 시작하고 중지 할 수있는 제어판을 만들어야합니까? 내가 시작할 수있는 간단한 예제가 있습니까?Jetty에서 예약 된 작업

답변

2

작업 구성 파일 "jobconf.xml"또는 작업을 구성해야하는 속성 파일을 만들어야합니다. 이 파일은 응용 프로그램의 클래스 경로 또는 부두에 추가해야합니다.

<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> 

및 사용 스케줄러를 서블릿에 :

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(); 
} 
0

석영 스케쥴러를 생성하고 응용 프로그램 컨텍스트에 넣습니다. Groovlet에 액세스 할 수 있으며 새 작업을 제출하고 실행중인 작업을 조작 할 수 있습니다.

5

석영보다 간단한 해결책이이다

당신은 다음과 같이 당신의 web.xml에 서블릿의 PARAMS에 QuartzInitializer를 추가해야 JDK에서 제공하는 Timer 및 TimerTask 클래스를 사용하십시오. 다양한 스케줄링 옵션을 제공하지는 않지만, 일정한 간격으로 태스크를 실행하려는 경우에는 충분해야합니다.

콘솔을 사용하여 작업을 시작하지 않으려면 직접 작성하거나 Timer에 대한 액세스를 제공하는 JMX 빈을 작성하고 JMX 콘솔을 사용하여 호출하십시오.