Java 将Cron作业计划为触发月的第一天--除非它';星期天

Java 将Cron作业计划为触发月的第一天--除非它';星期天,java,cron,scheduled-tasks,quartz-scheduler,Java,Cron,Scheduled Tasks,Quartz Scheduler,我希望它在每个月的第一天解雇一份工作,这应该是任何一周的一天。但如果是星期天,就不要解雇工作,只是推迟到第二天解雇,并立即终止计划。 同样,在接下来的几个月也要做同样的安排 下面是每55秒安排一次测试环境的代码,销毁方法如何 QuartzPlugin.java public class QuartzPlugin implements PlugIn { @Override public void destroy() { } @Override publ

我希望它在每个月的第一天解雇一份工作,这应该是任何一周的一天。但如果是星期天,就不要解雇工作,只是推迟到第二天解雇,并立即终止计划。 同样,在接下来的几个月也要做同样的安排

下面是每55秒安排一次测试环境的代码,销毁方法如何

QuartzPlugin.java

public class QuartzPlugin implements PlugIn {

    @Override
    public void destroy() {

    }
    @Override
    public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {
        // define the job and tie it to our MyJob class
        JobDetail job = JobBuilder.newJob(SchedulerJob.class).withIdentity("anyJobName", "group1").build();
        try {
            // Cron Trigger the job to run now, and then repeat every 55 secs
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("anyTriggerName", "group1")
                    .withSchedule(CronScheduleBuilder.cronSchedule("0/55 * * * * ?"))
                    //Every 1 minute "0 0/1 * 1/1 * ? *"
                    // Every 55 Sec "0/55 * * * * ?"
                    // Every 5 Sec "0/5 * * * * ?"
                    // Every month 1st day "0 10 1-7 * *"
                    .build();
            // Grab the Scheduler instance from the Factory
            Scheduler   scheduler = new StdSchedulerFactory().getScheduler();
            // and start it off
            scheduler.start();
            // Tell quartz to schedule the job using our trigger
            scheduler.scheduleJob(job, trigger);

        } catch (SchedulerException e) {
            e.printStackTrace();
        }

    }

}

SchedularJob.java

public class SchedulerJob implements Job {

    private ArrayList mapList = new ArrayList();
    private DAO dao = new DAO();
    private HSSFWorkbook workbook = new HSSFWorkbook();
    private FileOutputStream fileOut = null;

    public void execute(JobExecutionContext context) throws JobExecutionException {
        String dirpath = System.getProperty("user.dir").replaceAll("bin", "") + "webapps/it_email/sent/email_"
        + new SimpleDateFormat("dd-MM-yyyy").format(new Date());
        String genStatus = generateExcel(dirpath);
        System.out.println("genStatus::" + genStatus);
        if (genStatus.equals("Y")) {
            String text = "Please find attached case list dated "
                    + new SimpleDateFormat("dd-MM-yyyy").format(new Date()) + "."
                    + "\n\n Microsoft Excel is required to open this attachment.\n\n"
                    + "Registrar Judicial,High Court of Judicature at Hyderabad.\n\n"
                    + "This email is System  generated. Please do not reply to this email ID.\n\n "
                    + "Disclaimer:The NIC/High Court is not responsible for non-delivery of emails.";
            String subject = "HIGH COURT:Availability of Case Data.";
            String to = "ajaythakur2014@gmail.com";
            String filetype = ".xls";
            sendEmail(to, subject, text, dirpath, filetype);
            System.out.println("For every 55 secs");
        }
    }
当上面的代码运行时,我偶尔会得到 Oracle 9i生产环境:
IO异常:网络适配器无法建立连接

我想每55秒创建更多的新连接。

此链接可能有用,其中有官方文档:

您尝试在每个月的第一天安排工作的代码是什么?你做了哪些修改来避免它在周日运行?您包含的代码用于计划每55秒运行一次的作业,这与您的问题无关。请包括您实际问题的代码。我尝试每隔一段时间执行此操作,但我关心的是在特定时间段开始和停止。仍然没有与您的问题相关的代码。