亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cmsschedulemanager.java

?? cms是開源的框架
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
                try {
                    CmsScheduledJobInfo job = (CmsScheduledJobInfo)m_configuredJobs.get(i);
                    scheduleJob(cms, job);
                } catch (CmsSchedulerException e) {
                    // ignore this job, but keep scheduling the other jobs
                    // note: the log is has already been written
                }
            }
        }

        try {
            // start the scheduler
            m_scheduler.start();
        } catch (Exception e) {
            LOG.error(Messages.get().getBundle().key(Messages.LOG_CANNOT_START_SCHEDULER_0), e);
            // can not continue
            m_scheduler = null;
            return;
        }

        if (CmsLog.INIT.isInfoEnabled()) {
            CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SCHEDULER_STARTED_0));
            CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SCHEDULER_CONFIG_FINISHED_0));
        }
    }

    /**
     * Adds a new job to the scheduler.<p>
     *  
     * @param cms an OpenCms context object that must have been initialized with "Admin" permissions
     * @param jobInfo the job info describing the job to schedule
     * 
     * @throws CmsRoleViolationException if the user has insufficient role permissions
     * @throws CmsSchedulerException if the job could not be scheduled for any reason
     */
    public synchronized void scheduleJob(CmsObject cms, CmsScheduledJobInfo jobInfo)
    throws CmsRoleViolationException, CmsSchedulerException {

        if (OpenCms.getRunLevel() > OpenCms.RUNLEVEL_1_CORE_OBJECT) {
            // simple unit tests will have runlevel 1 and no CmsObject
            cms.checkRole(CmsRole.SCHEDULER_MANAGER);
        }

        if ((jobInfo == null) || (jobInfo.getClassName() == null)) {
            // prevent NPE
            CmsMessageContainer message = Messages.get().container(Messages.ERR_INVALID_JOB_CONFIGURATION_0);
            LOG.error(message.key());
            // can not continue
            throw new CmsSchedulerException(message);
        }

        if (m_scheduler == null) {
            CmsMessageContainer message = Messages.get().container(Messages.ERR_NO_SCHEDULER_1, jobInfo.getJobName());
            LOG.error(message.key());
            // can not continue
            throw new CmsSchedulerException(message);
        }

        Class jobClass;
        try {
            jobClass = Class.forName(jobInfo.getClassName());
        } catch (ClassNotFoundException e) {
            // class does not exist
            CmsMessageContainer message = Messages.get().container(
                Messages.ERR_JOB_CLASS_NOT_FOUND_1,
                jobInfo.getClassName());
            LOG.error(message.key());
            throw new CmsSchedulerException(message);
        }
        if (!I_CmsScheduledJob.class.isAssignableFrom(jobClass)) {
            // class does not implement required interface
            CmsMessageContainer message = Messages.get().container(
                Messages.ERR_JOB_CLASS_BAD_INTERFACE_2,
                jobInfo.getClassName(),
                I_CmsScheduledJob.class.getName());
            LOG.error(message.key());
            throw new CmsSchedulerException(message);
        }

        String jobId = jobInfo.getId();
        boolean idCreated = false;
        if (jobId == null) {
            // generate a new job id
            CmsUUID jobUUID = new CmsUUID();
            jobId = "OpenCmsJob_".concat(jobUUID.toString());
            jobInfo.setId(jobId);
            idCreated = true;
        }

        // generate Quartz job trigger
        CronTrigger trigger = new CronTrigger(jobId, Scheduler.DEFAULT_GROUP);

        try {
            trigger.setCronExpression(jobInfo.getCronExpression());
        } catch (ParseException e) {
            if (idCreated) {
                jobInfo.setId(null);
            }
            CmsMessageContainer message = Messages.get().container(
                Messages.ERR_BAD_CRON_EXPRESSION_2,
                jobInfo.getJobName(),
                jobInfo.getCronExpression());
            LOG.error(message.key());
            // can not continue
            throw new CmsSchedulerException(message);
        }

        CmsScheduledJobInfo oldJob = null;
        if (!idCreated) {
            // this job is already scheduled, remove the currently scheduled instance and keep the id     
            // important: since the new job may have errors, it's required to make sure the old job is only unscheduled 
            // if the new job info is o.k.
            oldJob = unscheduleJob(cms, jobId);
            if (oldJob == null) {
                CmsMessageContainer message = Messages.get().container(Messages.ERR_JOB_WITH_ID_DOES_NOT_EXIST_1, jobId);
                LOG.warn(message.key());
                // can not continue
                throw new CmsSchedulerException(message);
            }
            // open the job configuration (in case it has been frozen)
            jobInfo.setFrozen(false);
        }

        // only schedule jobs when they are marked as active
        if (jobInfo.isActive()) {

            // generate Quartz job detail
            JobDetail jobDetail = new JobDetail(jobInfo.getId(), Scheduler.DEFAULT_GROUP, CmsScheduleManager.class);

            // add the trigger to the job info
            jobInfo.setTrigger(trigger);

            // now set the job data
            JobDataMap jobData = new JobDataMap();
            jobData.put(CmsScheduleManager.SCHEDULER_JOB_INFO, jobInfo);
            jobDetail.setJobDataMap(jobData);

            // finally add the job to the Quartz scheduler
            try {
                m_scheduler.scheduleJob(jobDetail, trigger);
            } catch (Exception e) {
                if (LOG.isDebugEnabled()) {
                    LOG.debug(e.getMessage(), e);
                }
                if (idCreated) {
                    jobInfo.setId(null);
                }
                CmsMessageContainer message = Messages.get().container(
                    Messages.ERR_COULD_NOT_SCHEDULE_JOB_2,
                    jobInfo.getJobName(),
                    jobInfo.getClassName());
                if (oldJob != null) {
                    // make sure an old job is re-scheduled 
                    jobDetail = new JobDetail(oldJob.getId(), Scheduler.DEFAULT_GROUP, CmsScheduleManager.class);
                    jobDetail.setJobDataMap(jobData);
                    try {
                        m_scheduler.scheduleJob(jobDetail, oldJob.getTrigger());
                        m_jobs.add(oldJob);
                    } catch (SchedulerException e2) {
                        if (LOG.isDebugEnabled()) {
                            LOG.debug(e2.getMessage(), e2);
                        }
                        // unable to re-schedule original job - not much we can do about this...
                        message = Messages.get().container(
                            Messages.ERR_COULD_NOT_RESCHEDULE_JOB_2,
                            jobInfo.getJobName(),
                            jobInfo.getClassName());
                    }
                }
                if (LOG.isWarnEnabled()) {
                    LOG.warn(message.key());
                }
                throw new CmsSchedulerException(message);
            }
        }

        // freeze the scheduled job configuration
        jobInfo.initConfiguration();

        // add the job to the list of configured jobs
        m_jobs.add(jobInfo);

        if (LOG.isInfoEnabled()) {
            LOG.info(Messages.get().getBundle().key(
                Messages.LOG_JOB_SCHEDULED_4,
                new Object[] {
                    new Integer(m_jobs.size()),
                    jobInfo.getJobName(),
                    jobInfo.getClassName(),
                    jobInfo.getContextInfo().getUserName()}));
            Date nextExecution = jobInfo.getExecutionTimeNext();
            if (nextExecution != null) {
                LOG.info(Messages.get().getBundle().key(
                    Messages.LOG_JOB_NEXT_EXECUTION_2,
                    jobInfo.getJobName(),
                    nextExecution));
            }
        }
    }

    /** 
     * Shuts down this instance of the OpenCms scheduler manager.<p>
     */
    public synchronized void shutDown() {

        m_adminCms = null;

        if (CmsLog.INIT.isInfoEnabled()) {
            CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SHUTDOWN_1, this.getClass().getName()));
        }

        if (m_scheduler != null) {
            try {
                m_scheduler.shutdown();
            } catch (SchedulerException e) {
                LOG.error(Messages.get().getBundle().key(Messages.LOG_SHUTDOWN_ERROR_0));
            }
        }

        m_scheduler = null;
    }

    /**
     * Removes a currently scheduled job from the scheduler.<p>
     *  
     * @param cms an OpenCms context object that must have been initialized with "Admin" permissions
     * @param jobId the id of the job to unschedule, obtained with <code>{@link CmsScheduledJobInfo#getId()}</code>
     * 
     * @return the <code>{@link CmsScheduledJobInfo}</code> of the sucessfully unscheduled job, 
     *      or <code>null</code> if the job could not be unscheduled
     * 
     * @throws CmsRoleViolationException if the user has insufficient role permissions
     */
    public synchronized CmsScheduledJobInfo unscheduleJob(CmsObject cms, String jobId) throws CmsRoleViolationException {

        if (OpenCms.getRunLevel() > OpenCms.RUNLEVEL_1_CORE_OBJECT) {
            // simple unit tests will have runlevel 1 and no CmsObject
            cms.checkRole(CmsRole.SCHEDULER_MANAGER);
        }

        CmsScheduledJobInfo jobInfo = null;
        if (m_jobs.size() > 0) {
            // try to remove the job from the OpenCms list of jobs
            for (int i = (m_jobs.size() - 1); i >= 0; i--) {
                CmsScheduledJobInfo job = (CmsScheduledJobInfo)m_jobs.get(i);
                if (jobId.equals(job.getId())) {
                    m_jobs.remove(i);
                    if (jobInfo != null) {
                        LOG.error(Messages.get().getBundle().key(Messages.LOG_MULTIPLE_JOBS_FOUND_1, jobId));
                    }
                    jobInfo = job;
                }
            }
        }

        if ((jobInfo != null) && jobInfo.isActive()) {
            // job currently active, remove it from the Quartz scheduler
            try {
                // try to remove the job from Quartz
                m_scheduler.unscheduleJob(jobId, Scheduler.DEFAULT_GROUP);
                if (LOG.isDebugEnabled()) {
                    LOG.debug(Messages.get().getBundle().key(Messages.LOG_UNSCHEDULED_JOB_1, jobId));
                }
            } catch (SchedulerException e) {
                if (LOG.isDebugEnabled()) {
                    LOG.debug(Messages.get().getBundle().key(Messages.LOG_UNSCHEDULING_ERROR_1, jobId));
                }
            }
        }

        return jobInfo;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久亚洲精华液精华液精华液| 日韩精品免费视频人成| 亚洲国产精品嫩草影院| 国产一区二区三区香蕉| 7777精品久久久大香线蕉| 国产精品久久久久国产精品日日| 日韩精彩视频在线观看| 色婷婷av一区| 国产精品欧美精品| 激情综合亚洲精品| 欧美日本视频在线| 亚洲色图视频网| 岛国av在线一区| 久久五月婷婷丁香社区| 日本va欧美va精品发布| 欧美三级视频在线观看| 亚洲综合一区在线| 99re视频精品| 中文av字幕一区| 国产91精品精华液一区二区三区| 日韩天堂在线观看| 免费观看一级欧美片| 欧美人妇做爰xxxⅹ性高电影| 亚洲丝袜制服诱惑| 99re8在线精品视频免费播放| 欧美国产一区二区| 成人av资源站| 中文字幕亚洲综合久久菠萝蜜| 丁香另类激情小说| 国产喷白浆一区二区三区| 国产电影一区二区三区| 国产亚洲成aⅴ人片在线观看| 国产一区视频在线看| 久久精品视频免费| 国产麻豆精品视频| 欧美国产亚洲另类动漫| av亚洲精华国产精华精华 | 另类小说视频一区二区| 欧美日韩高清在线| 日本午夜精品一区二区三区电影| 欧美精品99久久久**| 美腿丝袜一区二区三区| 日韩欧美123| 久久国产三级精品| 国产婷婷色一区二区三区四区 | 老司机精品视频在线| 91精品国产免费久久综合| 久久av资源网| 国产网站一区二区| 97精品电影院| 五月激情综合婷婷| 91精品国产综合久久久久久| 久久99精品久久久久久动态图| 精品久久久三级丝袜| 国产成人免费高清| 亚洲男人的天堂av| 在线综合+亚洲+欧美中文字幕| 老司机午夜精品| 日本一区二区三区四区 | 九九九精品视频| 中文字幕中文字幕中文字幕亚洲无线| 国产suv精品一区二区三区| 日韩美女久久久| 制服丝袜一区二区三区| 日本午夜精品视频在线观看 | 欧美日韩亚洲丝袜制服| 免费成人小视频| 国产欧美日韩卡一| 欧美亚洲动漫精品| 国产精品一二三| 五月天欧美精品| 日本一区二区三级电影在线观看| 在线观看视频91| 国产真实乱对白精彩久久| 亚洲一二三专区| 久久免费看少妇高潮| 欧美欧美欧美欧美| 91在线视频播放| 国产九九视频一区二区三区| 五月综合激情网| 亚洲三级免费电影| www国产成人免费观看视频 深夜成人网| www..com久久爱| 国产丶欧美丶日本不卡视频| 全国精品久久少妇| 亚洲国产精品久久久久婷婷884| 久久久久久亚洲综合影院红桃| 欧美日本韩国一区| 色先锋资源久久综合| 国产成人av电影在线观看| 免费看日韩a级影片| 亚洲一区二区美女| 亚洲男人的天堂一区二区| 国产日韩高清在线| 久久伊人蜜桃av一区二区| 欧美一级一区二区| 欧美精品自拍偷拍| 欧美三级蜜桃2在线观看| 色呦呦网站一区| 91小视频在线观看| 99riav一区二区三区| 成人黄色片在线观看| 国产成人精品在线看| 久久国产人妖系列| 国内欧美视频一区二区 | 成人国产精品视频| 国产福利精品导航| 国产一区二区0| 国产一区在线视频| 国产一区二区三区在线观看免费| 蜜桃精品在线观看| 蜜芽一区二区三区| 久久不见久久见免费视频7| 精品一区二区在线免费观看| 久久精品国产亚洲a| 激情综合色播激情啊| 国产真实精品久久二三区| 国产精品一区二区不卡| 成人永久免费视频| 成人av电影观看| 色综合久久99| 欧美日本乱大交xxxxx| 日韩精品在线一区| 精品国产网站在线观看| 久久精品夜色噜噜亚洲aⅴ| 国产精品二区一区二区aⅴ污介绍| 久久久国产精品不卡| 中文字幕欧美三区| 1000精品久久久久久久久| 一区二区三区日韩精品| 日韩在线观看一区二区| 久久国产日韩欧美精品| 懂色av噜噜一区二区三区av| 色综合久久久久综合体| 4438x成人网最大色成网站| 久久亚洲春色中文字幕久久久| 欧美国产综合色视频| 一二三四社区欧美黄| 久久99久久久久| 丰满放荡岳乱妇91ww| 色国产精品一区在线观看| 欧美一区二区网站| 国产精品欧美一区二区三区| 亚洲电影一区二区| 国产精品一区三区| 一本大道久久a久久综合婷婷| 欧美日韩高清一区二区不卡| 久久久亚洲国产美女国产盗摄| 日韩美女视频一区二区| 一区二区三区色| 亚洲一区二区五区| 韩国理伦片一区二区三区在线播放 | 国产精品午夜免费| 性欧美大战久久久久久久久| 国产成人精品aa毛片| 欧美日韩国产一级| 国产精品视频线看| 蜜桃视频一区二区三区 | 一区二区三区加勒比av| 韩国欧美国产一区| 欧美日韩精品二区第二页| 国产精品免费视频网站| 天堂一区二区在线免费观看| 成人午夜在线播放| 91精品国产综合久久精品图片| 国产精品嫩草久久久久| 狠狠色2019综合网| 777午夜精品视频在线播放| 中文字幕佐山爱一区二区免费| 麻豆精品一二三| 欧美日韩久久久| 亚洲欧洲成人自拍| 看电视剧不卡顿的网站| 26uuuu精品一区二区| 亚洲精品美国一| 懂色av中文一区二区三区 | 在线看不卡av| 国产欧美精品一区二区三区四区| 丝袜亚洲另类丝袜在线| 欧洲av一区二区嗯嗯嗯啊| 国产精品久久久久久户外露出| 久久99久久久久| 日韩三级伦理片妻子的秘密按摩| 亚洲国产va精品久久久不卡综合| 99精品热视频| 国产精品麻豆久久久| 国产一区二区在线看| 久久天天做天天爱综合色| 蜜臀av一区二区在线免费观看| 欧美日韩视频在线观看一区二区三区 | 国产.欧美.日韩| 精品久久久网站| 久久99精品国产麻豆婷婷洗澡| 91精品国产全国免费观看| 亚洲成人精品在线观看| 欧美日韩在线播放三区| 图片区小说区国产精品视频| 欧美日韩免费在线视频| 日韩和欧美的一区| 日韩一区二区三区观看|