如何解决CronTrigger没有在定义的时间执行
我有向用户发送每日电子邮件的时间表,我正在使用Crontrigger每天向用户发送电子邮件,但时间表在下午3:15时未执行。
public class Schedulars {
static Scheduler scheduler;
private static Logger LOG = Logger.getLogger(Schedulars.class);
public static Date date;
public static boolean flag = true;
public static boolean smscdownflag = true;
public static void schedular() {
try {
JobDetail dailyEmailJob = new JobDetail();
dailyEmailJob.setName("dailyEmailSchedular");
dailyEmailJob.setJobClass(SendDailyEmail.class);
scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
CronTrigger dailyEmailJobTrigger = new CronTrigger();
dailyEmailJobTrigger.setName("dailyEmailJobTrigger");
try {
dailyEmailJobTrigger.setCronExpression("0 15 15 * * ?");
scheduler.scheduleJob(dailyEmailJob,dailyEmailJobTrigger);
} catch (ParseException e) {
LOG.error(e.getMessage(),e);
e.printStackTrace();
}
LOG.debug("------------------------------schedulars started----------------------");
} catch (SchedulerException e) {
e.printStackTrace();
LOG.error(e);
} finally {
}
}
public static Scheduler getScheduler() {
return scheduler;
}
public static void setScheduler(Scheduler scheduler) {
Schedulars.scheduler = scheduler;
}
}
发送必须在下午3点15分执行的每日电子邮件课程
public class SendDailyEmail implements Job {
private static Logger LOG = Logger.getLogger(SendDailyEmail.class);
public void execute(JobExecutionContext arg0) throws JobExecutionException {
LOG.info("Sending Daily Email ");
Schedulars.date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(Schedulars.date);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
String check = "false";
try {
LOG.debug("hour of the day:" + hours);
if (hours == 8) {
if (LoggerInitializer.dailymailflag) {
LoggerInitializer.dailymailflag = false;
LOG.debug("In Send Daily Email Schedular" + LoggerInitializer.dailymailflag);
LOG.debug("Before Execute");
if (LoggerInitializer.sessioncheckfordailyemail != null) {
check = LoggerInitializer.sessioncheckfordailyemail.get("" + hours);
LOG.debug("hashmap " + LoggerInitializer.sessioncheckfordailyemail.containsKey("" + hours));
if (check == null) {
LoggerInitializer.sessioncheckfordailyemail.put("" + hours,"true");
LOG.debug("In Send Daily Email Schedular" + LoggerInitializer.dailymailflag);
UserDaoInterface userDaoInterface = JndiLookup.getUserDAO();
ArrayList<SystemUser> arrUpdateSystemUsers = new ArrayList<SystemUser>();
ArrayList<SystemUser> arraySystemUsers = userDaoInterface
.getAllClientsForDailyEmail("sysadmin");
LOG.debug("size-------------------" + arraySystemUsers.size());
if (arraySystemUsers != null) {
LOG.debug("size-------------------" + arraySystemUsers.size());
for (SystemUser systemUser : arraySystemUsers) {
LOG.info("--------------------------------------In Sending Daily email class");
if (systemUser.getBillingType().equalsIgnoreCase("Prepaid")) {
ArrayList<SystemUser> clientUsers = userDaoInterface
.getUserByUsermasterID("" + systemUser.getId());
for (SystemUser user : clientUsers) {
LOG.info("System User User Id" + user.getUserid());
LOG.info("System User Master Id" + user.getUsermasterId());
LOG.info("System User credits " + user.getCredits());
LOG.info("System User clientref " + user.getClientref());
senddailyEmail(user,systemUser);
user.setDate(new Date());
arrUpdateSystemUsers.add(user);
}
}
}
for (SystemUser systemUser : arrUpdateSystemUsers) {
userDaoInterface.mergeUser(systemUser);
}
}
userDaoInterface = null;
} else {
System.out.println("Mail Already sent");
}
}
}
} else {
if (hours == 9) {
System.out.println("In Send Daily Email Schedular" + LoggerInitializer.dailymailflag);
LoggerInitializer.dailymailflag = true;
LoggerInitializer.sessioncheckfordailyemail.remove("" + "8");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
Schedulars.date = null;
}
private void clearsessionIdHashmap() {
if (Pl4SMSInitializer.hmSessionIdTime != null && !Pl4SMSInitializer.hmSessionIdTime.isEmpty()) {
for (Entry<String,String> entry : Pl4SMSInitializer.hmSessionIdTime.entrySet()) {
if (DateUtility.isSessionIdExpired(entry.getKey())) {
Pl4SMSInitializer.hmSessionIdTime.remove(entry);
Pl4SMSInitializer.hmUserpassSessionId.remove(entry);
}
}
}
}
private void senddailyEmail(SystemUser systemUser,SystemUser mastersUser) {
LOG.info("--------------------------------------In Sending Daily email method");
String subject = "SMS Account Balance Information";
if (systemUser.getPrimaryEmailAddress() != null && !systemUser.getPrimaryEmailAddress().isEmpty()) {
try {
GenerateEmail.balanceRootMApMail(systemUser.getUserid(),subject,mastersUser,null);
} catch (Exception e) {
e.printStackTrace();
} finally {
systemUser = null;
}
}
}
}
我如何确保cron作业每天下午3:15执行。请发表评论以获取所需的任何其他信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。