【发布时间】:2015-02-17 06:18:49
【问题描述】:
用于在目录中存储碧玉报告的简单 Java 应用程序的 Quartz 调度程序正在工作,因为我使用 public void execute 而不是 public static void main 并在作业类中执行,如下所示,
我不希望以正确的方式传递 servlet id 的 URL,当我运行将触发作业类文件的调度程序 servlet 时,它将调用 servlet 类。
帮帮我 导入 java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class Starter_jasper implements Job {
public Starter_jasper()
{
JobExecutionContext jec = null;
try {
execute(jec);
} catch (JobExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void execute(JobExecutionContext jec) throws JobExecutionException{
//include(Jasper_database.class);
System.out.println("" + new Date());
Jasper_database jb = new Jasper_database();
jb.execute();
//fill your jobs here
}} this code works for a simple java
它适用于一个简单的 java 应用程序,但我的问题是我如何为 servlet 类做到这一点, 我直接运行我的 servlet 类,我没有使用任何 JSP,我的调度程序和触发器在另一个 servlet 中 如下图
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import job.quartz.gateway.GatewayPlugin;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.ScheduleBuilder;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import com.jasper.servlet.JasperSReport;
/**
* Servlet implementation class QuartzServlet
*/
public class QuartzServlet extends GenericServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public QuartzServlet() {
super();
// TODO Auto-generated constructor stub
}
public void init(ServletConfig config)throws ServletException{
super.init(config);
Scheduler sched;
try{
sched = StdSchedulerFactory.getDefaultScheduler();
sched.start();
// JobDetail jd = new JobDetail("myjob", sched.DEFAULT_GROUP,GatewayPlugin.class);
JobDetail job = JobBuilder.newJob(GatewayPlugin.class).
withIdentity("JasperSReport").build();
ScheduleBuilder ScheduleBuilder = SimpleScheduleBuilder.simpleSchedule().
withIntervalInSeconds(20).
repeatForever();
Trigger trigger = TriggerBuilder.newTrigger().
withIdentity("QuartzTrigger").
withSchedule(ScheduleBuilder).
startNow().
build();
sched.scheduleJob(job, trigger);
}catch(SchedulerException e){
System.out.println("Scheduler exception at class file shcedule or trigger"+e);
}
}
public void service(
ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException{
}
}
【问题讨论】:
-
你的意思是从一个servlet调用一个servlet?
-
是的,我有三个文件 1) 首先是我的 Servlet 类,它可以在浏览器上显示 jasper 报告或将文件存储在目录中 2) 我在其中实现我的作业的 Java 文件实现了第一个 Servlet 类,并且 3) 实现了第三个 Servlet 类,其中包含通过第二个 Java 文件调用第一个 Servlet 类的触发器。
标签: java servlets quartz-scheduler