Saturday, February 20, 2010

Quartz Admin JSP

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>&nbsp;</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>
<%
    }
%>

10 comments:

  1. Thanks a lot for providing this incredibly precious post

    ReplyDelete
  2. dude you save my life

    ReplyDelete
  3. This is really a very very very precious post.. Thanks a ton the author...:)

    ReplyDelete
  4. Dude, Did you work in hibbert group anytime?

    ReplyDelete
  5. Hi can you provide the source for this example? Thanks!

    ReplyDelete
  6. Alberto the code pasted above is the source code of the example.

    ReplyDelete
  7. It is realy helpful to learn the idea.

    ReplyDelete