【发布时间】:2011-12-16 10:08:22
【问题描述】:
我在 gwt web 应用程序中使用石英调度程序。我的应用程序结构如下所示。
我有两个项目。一个是 gwt Web 应用程序客户端项目(用于 ui 部分),另一个是用于服务器端调用的 java 项目。(用于数据库交互)。在客户端项目中,我放置了一个服务器项目以供参考。运行时我从客户端创建一个战争并将一罐服务器项目添加到战争文件夹。
现在我在服务器端使用调度程序来自动完成某些任务。在本地运行时(没有战争)调度程序正常工作。
但是在 jboss 服务器调度器上运行 war 时没有运行。
我的所有调度程序相关代码和 Quartz.jar 都在服务器端。客户端项目中没有任何 Quartz 引用。这是问题吗???
这是我的调度程序代码
public class QuartzJob implements Job {
public void execute(JobExecutionContext jobExecutionContext)
throws JobExecutionException {
JobDataMap map = jobExecutionContext.getJobDetail().getJobDataMap();
ActivityTransactionSettingsMap map2 = (ActivityTransactionSettingsMap) map
.get("task");
if (map2.getAutoCompleteDate() != null) {
WorkFlowFacade facade = new WorkFlowFacade();
facade.completeAutoCompleteTask(map2);
Scheduler scheduler=(Scheduler) map.get("scheduler");
try {
scheduler.shutdown();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
}
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
JobDataMap map2 = new JobDataMap();
map2.put("task", actsMap);
map2.put("scheduler", scheduler);
JobDetail job = newJob(QuartzJob.class).withIdentity("job"+String.valueOf(actsMap.getId()))
.usingJobData(map2).build();
Trigger trigger = newTrigger().withIdentity("trigger"+String.valueOf(actsMap.getId()))
.startAt(actsMap.getAutoCompleteDate()).build();
scheduler.scheduleJob(job, trigger);
或者我是否只需要在客户端转移与调度程序相关的项目? 我不知道如何解决这个问题。 请帮帮我
【问题讨论】:
-
据我所知,调度程序与您的 GWT 代码无关。调度器的触发器是什么?
-
这里是触发器。触发器 trigger = newTrigger().withIdentity("trigger") .startAt(tomaroDate).build();
-
不确定我是否能找到您。它应该从第二天开始连续运行吗?这是你需要的吗?
-
这只是一个示例...它将在特定日期开始。
标签: gwt jboss scheduling quartz-scheduler