We use quartz for scheduling jobs on tomcat nodes, the job runs on a frequency rather then a set time so its helpful to know when is the next time the job will be fired and for testing purposes its good if we can fire the job manually instead of waiting for the trigger to happen as some jobs runs only once a day. I wrote this small JSP that exactly allows to do the same.
Here is the sample code for jsp for googlers like me
<%@page import="org.quartz.ee.servlet.QuartzInitializerServlet" %>
<%@page import="org.quartz.impl.StdSchedulerFactory" %>
<%@page import="org.quartz.*" %>
<%@page import="java.util.*" %>
<%
String jobNameToRun=request.getParameter("jobNameToRun");
String groupNameToRun=request.getParameter("groupNameToRun");
String btnTrigger=request.getParameter("btnTrigger");
StdSchedulerFactory factory = (StdSchedulerFactory) pageContext.getServletContext().getAttribute(QuartzInitializerServlet.QUARTZ_FACTORY_KEY);
Scheduler scheduler = factory.getScheduler();
if("Trigger Now".equals(btnTrigger)) {
scheduler.triggerJob(jobNameToRun, groupNameToRun);
%>
Job <%=jobNameToRun%> triggered.<BR>
<%
}
for(String groupName : scheduler.getJobGroupNames()) {
%>
<p>GroupName:<%=groupName%></p><br>
<table border="1">
<tr><td><b>JobName</b></td><td><b>Next Fire Time</b></td><td> </td></tr>
<%
for(String jobName : scheduler.getJobNames(groupName)) {
Trigger[] triggers = scheduler.getTriggersOfJob(jobName, groupName);
Date nextFireTime = triggers[0].getNextFireTime();
%>
<tr><td><%=jobName%></td><td><%=nextFireTime%></td><td><form><input type="hidden" name="groupNameToRun" value="<%=groupName%>"/><input type="hidden" name="jobNameToRun" value="<%=jobName%>"/><input type="submit" name="btnTrigger" value="Trigger Now"/></form></tr>
<% }
%>
</table>
<%
}
%>
Here is the sample code for jsp for googlers like me
<%@page import="org.quartz.ee.servlet.QuartzInitializerServlet" %>
<%@page import="org.quartz.impl.StdSchedulerFactory" %>
<%@page import="org.quartz.*" %>
<%@page import="java.util.*" %>
<%
String jobNameToRun=request.getParameter("jobNameToRun");
String groupNameToRun=request.getParameter("groupNameToRun");
String btnTrigger=request.getParameter("btnTrigger");
StdSchedulerFactory factory = (StdSchedulerFactory) pageContext.getServletContext().getAttribute(QuartzInitializerServlet.QUARTZ_FACTORY_KEY);
Scheduler scheduler = factory.getScheduler();
if("Trigger Now".equals(btnTrigger)) {
scheduler.triggerJob(jobNameToRun, groupNameToRun);
%>
Job <%=jobNameToRun%> triggered.<BR>
<%
}
for(String groupName : scheduler.getJobGroupNames()) {
%>
<p>GroupName:<%=groupName%></p><br>
<table border="1">
<tr><td><b>JobName</b></td><td><b>Next Fire Time</b></td><td> </td></tr>
<%
for(String jobName : scheduler.getJobNames(groupName)) {
Trigger[] triggers = scheduler.getTriggersOfJob(jobName, groupName);
Date nextFireTime = triggers[0].getNextFireTime();
%>
<tr><td><%=jobName%></td><td><%=nextFireTime%></td><td><form><input type="hidden" name="groupNameToRun" value="<%=groupName%>"/><input type="hidden" name="jobNameToRun" value="<%=jobName%>"/><input type="submit" name="btnTrigger" value="Trigger Now"/></form></tr>
<% }
%>
</table>
<%
}
%>
Thanks a lot for providing this incredibly precious post
ReplyDeleteVery useful post
ReplyDeletedude you save my life
ReplyDeleteThis is really a very very very precious post.. Thanks a ton the author...:)
ReplyDeletehow can i use this ??? plzzzz
ReplyDeleteDude, Did you work in hibbert group anytime?
ReplyDeleteI never worked at hibbert group.
DeleteHi can you provide the source for this example? Thanks!
ReplyDeleteAlberto the code pasted above is the source code of the example.
ReplyDelete