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

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

?? cmsschedulemanager.java

?? cms是開源的框架
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * File   : $Source: /usr/local/cvs/opencms/src/org/opencms/scheduler/CmsScheduleManager.java,v $
 * Date   : $Date: 2006/03/27 14:52:20 $
 * Version: $Revision: 1.27 $
 *
 * This library is part of OpenCms -
 * the Open Source Content Mananagement System
 *
 * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * For further information about Alkacon Software GmbH, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.scheduler;

import org.opencms.file.CmsObject;
import org.opencms.i18n.CmsMessageContainer;
import org.opencms.main.CmsLog;
import org.opencms.main.OpenCms;
import org.opencms.security.CmsRole;
import org.opencms.security.CmsRoleViolationException;
import org.opencms.util.CmsStringUtil;
import org.opencms.util.CmsUUID;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import org.apache.commons.logging.Log;

import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

/**
 * Manages the OpenCms scheduled jobs.<p>
 * 
 * Please see the documentation of the class {@link org.opencms.scheduler.CmsScheduledJobInfo} 
 * for a full description of the OpenCms scheduling capabilities.<p>
 * 
 * The OpenCms scheduler implementation internally uses the
 * <a href="http://www.opensymphony.com/quartz/">Quartz scheduler</a> from
 * the <a href="http://www.opensymphony.com/">OpenSymphony project</a>.<p>
 * 
 * This manager class implements the <code>org.quartz.Job</code> interface
 * and wraps all calls to the {@link org.opencms.scheduler.I_CmsScheduledJob} implementing 
 * classes.<p>
 * 
 * @author Alexander Kandzior 
 *  
 * @version $Revision: 1.27 $ 
 * 
 * @since 6.0.0 
 * 
 * @see org.opencms.scheduler.CmsScheduledJobInfo
 */
public class CmsScheduleManager implements Job {

    /** Key for the scheduled job description in the job data map. */
    public static final String SCHEDULER_JOB_INFO = "org.opencms.scheduler.CmsScheduledJobInfo";

    /** The log object for this class. */
    private static final Log LOG = CmsLog.getLog(CmsScheduleManager.class);

    /** The Admin context used for creation of users for the individual jobs. */
    private static CmsObject m_adminCms;

    /** The list of job entries from the configuration. */
    private List m_configuredJobs;

    /** The list of scheduled jobs. */
    private List m_jobs;

    /** The initialized scheduler. */
    private Scheduler m_scheduler;

    /**
     * Default constructor for the scheduler manager, 
     * used only when a new job is scheduled.<p>
     */
    public CmsScheduleManager() {

        // important: this constructor is always called when a new job is 
        // generated, so it _must_ remain empty
    }

    /**
     * Used by the configuration to create a new Scheduler during system startup.<p>
     * 
     * @param configuredJobs the jobs from the configuration
     */
    public CmsScheduleManager(List configuredJobs) {

        m_configuredJobs = configuredJobs;
        int size = 0;
        if (m_configuredJobs != null) {
            size = m_configuredJobs.size();
        }

        if (CmsLog.INIT.isInfoEnabled()) {
            CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SCHEDULER_CREATED_1, new Integer(size)));
        }
    }

    /**
     * Implementation of the Quartz job interface.<p>
     * 
     * The architecture is that this scheduler manager generates
     * a new (empty) instance of itself for every OpenCms job scheduled with Quartz. 
     * When the Quartz job is executed, the configured 
     * implementaion of {@link I_CmsScheduledJob} will be called from this method.<p>
     * 
     * @see org.quartz.Job#execute(org.quartz.JobExecutionContext)
     */
    public void execute(JobExecutionContext context) {

        JobDataMap jobData = context.getJobDetail().getJobDataMap();
        CmsScheduledJobInfo jobInfo = (CmsScheduledJobInfo)jobData.get(SCHEDULER_JOB_INFO);

        if (jobInfo == null) {
            LOG.error(Messages.get().getBundle().key(Messages.LOG_INVALID_JOB_1, context.getJobDetail().getFullName()));
            // can not continue
            return;
        }

        if (LOG.isDebugEnabled()) {
            LOG.debug(Messages.get().getBundle().key(Messages.LOG_JOB_STARTING_1, jobInfo.getJobName()));
        }

        I_CmsScheduledJob job = jobInfo.getJobInstance();

        if (job != null) {
            try {
                // launch the job
                CmsObject cms = null;

                // only simple test cases might not have admin cms available
                if (m_adminCms != null) {
                    // generate a CmsObject for the job context                    
                    cms = OpenCms.initCmsObject(m_adminCms, jobInfo.getContextInfo());
                }

                String result = job.launch(cms, jobInfo.getParameters());
                if (CmsStringUtil.isNotEmpty(result) && LOG.isInfoEnabled()) {
                    LOG.info(Messages.get().getBundle().key(
                        Messages.LOG_JOB_EXECUTION_OK_2,
                        jobInfo.getJobName(),
                        result));
                }
            } catch (Throwable t) {
                LOG.error(Messages.get().getBundle().key(Messages.LOG_JOB_EXECUTION_ERROR_1, jobInfo.getJobName()), t);
            }
        }

        if (LOG.isDebugEnabled()) {
            LOG.debug(Messages.get().getBundle().key(Messages.LOG_JOB_EXECUTED_1, jobInfo.getJobName()));
            Date nextExecution = jobInfo.getExecutionTimeNext();
            if (nextExecution != null) {
                LOG.info(Messages.get().getBundle().key(
                    Messages.LOG_JOB_NEXT_EXECUTION_2,
                    jobInfo.getJobName(),
                    nextExecution));
            }
        }
    }

    /**
     * Returns the currently scheduled job description identified by the given id.
     * 
     * @param id the job id
     * 
     * @return a job or <code>null</code> if not found
     */
    public CmsScheduledJobInfo getJob(String id) {

        Iterator it = m_jobs.iterator();
        while (it.hasNext()) {
            CmsScheduledJobInfo job = (CmsScheduledJobInfo)it.next();
            if (job.getId().equals(id)) {
                return job;
            }
        }
        // not found
        return null;
    }

    /**
     * Returns the currently scheduled job descriptions in an unmodifiable list.<p>
     *
     * The objects in the List are of type <code>{@link CmsScheduledJobInfo}</code>.<p>
     *
     * @return the currently scheduled job descriptions in an unmodifiable list
     */
    public List getJobs() {

        return Collections.unmodifiableList(m_jobs);
    }

    /**
     * Initializes the OpenCms scheduler.<p> 
     * 
     * @param cms an OpenCms context object that must have been initialized with "Admin" permissions
     * 
     * @throws CmsRoleViolationException if the user has insufficient role permissions
     */
    public synchronized void initialize(CmsObject cms) 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);
        }

        // the list of job entries
        m_jobs = new ArrayList();

        // save the admin cms
        m_adminCms = cms;

        // Quartz scheduler settings
        Properties properties = new Properties();
        properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, "OpenCmsScheduler");
        properties.put(StdSchedulerFactory.PROP_SCHED_THREAD_NAME, "OpenCms: Scheduler");
        properties.put(StdSchedulerFactory.PROP_SCHED_RMI_EXPORT, CmsStringUtil.FALSE);
        properties.put(StdSchedulerFactory.PROP_SCHED_RMI_PROXY, CmsStringUtil.FALSE);
        properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, CmsSchedulerThreadPool.class.getName());
        properties.put(StdSchedulerFactory.PROP_JOB_STORE_CLASS, "org.quartz.simpl.RAMJobStore");

        try {
            // initilize the Quartz scheduler
            SchedulerFactory schedulerFactory = new StdSchedulerFactory(properties);
            m_scheduler = schedulerFactory.getScheduler();
        } catch (Exception e) {
            LOG.error(Messages.get().getBundle().key(Messages.LOG_NO_SCHEDULER_0), e);
            // can not continue
            m_scheduler = null;
            return;
        }

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

        if (m_configuredJobs != null) {
            // add all jobs from the system configuration
            for (int i = 0; i < m_configuredJobs.size(); i++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777色狠狠一区二区三区| 91蜜桃视频在线| 亚洲成a人v欧美综合天堂下载| 精品成人免费观看| 欧美成人综合网站| 91麻豆精品国产91久久久更新时间| 欧美视频三区在线播放| 在线精品国精品国产尤物884a| 91福利在线播放| 欧美性大战久久久久久久蜜臀| 欧美在线综合视频| 欧美日韩成人在线| 日韩亚洲欧美高清| 26uuu亚洲综合色欧美| 中文在线一区二区| 亚洲精品第一国产综合野| 亚洲一区欧美一区| 蜜臀久久99精品久久久久宅男 | 成人动漫视频在线| 成人动漫视频在线| 在线精品国精品国产尤物884a| 欧美日韩免费在线视频| 日韩一区二区在线观看视频播放| 久久免费国产精品| 亚洲色图视频网| 秋霞av亚洲一区二区三| 国产一区二区h| 欧美在线免费播放| 欧美成人vps| 亚洲精品视频自拍| 久久国产视频网| 色久综合一二码| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产成人亚洲综合色影视| 99久久99精品久久久久久| 欧美日韩免费一区二区三区视频| 久久久久久日产精品| 亚洲国产一区二区三区青草影视 | 国产精品蜜臀av| 日韩精品一二三区| 不卡av在线免费观看| 日韩三级.com| 亚洲综合在线电影| 成人午夜大片免费观看| 7777精品伊人久久久大香线蕉的| 中日韩av电影| 裸体一区二区三区| 欧美日韩中文精品| 自拍av一区二区三区| 国产一区二区三区久久久| 欧美日韩成人在线一区| 亚洲欧洲精品一区二区精品久久久| 蜜乳av一区二区| 91丨九色丨蝌蚪丨老版| 亚洲精品一区二区三区香蕉| 亚洲国产成人tv| 99久久伊人久久99| 国产色综合久久| 久久精品国产一区二区三| 色综合久久66| 亚洲欧洲日韩综合一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 91麻豆精品国产91久久久资源速度| 亚洲免费观看高清完整版在线观看熊 | 欧美激情综合在线| 久久国产剧场电影| 91精品国产91久久综合桃花| 一区二区三区 在线观看视频| 91视频国产观看| 精品成人一区二区三区| 精品一区二区三区在线播放视频 | 丁香激情综合国产| 国产肉丝袜一区二区| 激情欧美日韩一区二区| 精品裸体舞一区二区三区| 久久精品99国产精品日本| 精品国产乱码久久久久久影片| 日本vs亚洲vs韩国一区三区二区| 欧美福利电影网| 免费成人在线影院| 日韩欧美综合在线| 久久国产欧美日韩精品| 久久色成人在线| 国产suv精品一区二区三区| 国产精品久久久久久久久快鸭 | 91免费观看视频| 中文字幕亚洲不卡| 色综合久久久久综合体桃花网| 成人免费在线观看入口| 色猫猫国产区一区二在线视频| 亚洲男人的天堂在线aⅴ视频 | 欧美日韩免费观看一区三区| 日本不卡123| 国产日产欧美一区二区视频| av午夜一区麻豆| 亚洲综合激情网| 欧美mv和日韩mv的网站| 成人av网站在线观看免费| 一二三四社区欧美黄| 欧美一区二区三区四区在线观看 | 色综合一个色综合亚洲| 亚洲h在线观看| 精品1区2区在线观看| av电影一区二区| 天天综合日日夜夜精品| 久久久99精品免费观看| 色悠悠久久综合| 久草精品在线观看| 亚洲人成网站在线| 91精品国产aⅴ一区二区| 成人免费观看av| 日韩高清在线观看| 中文字幕一区二区三区不卡| 777a∨成人精品桃花网| 国产精品66部| 日韩国产在线一| 最新成人av在线| 欧美va亚洲va| 欧美日韩视频不卡| 99国产精品久久久| 国产乱码一区二区三区| 午夜精品久久久久久| 国产精品久久久久精k8| 日韩精品专区在线影院观看| 91小视频免费看| 国产成人精品亚洲午夜麻豆| 婷婷国产在线综合| 亚洲欧美aⅴ...| 久久久久久久久一| 91精品国产免费| 欧美亚洲国产一区在线观看网站| 国产精品69毛片高清亚洲| 日本亚洲免费观看| 亚洲精品成人少妇| 中文字幕中文字幕中文字幕亚洲无线| 欧美一区二区三区免费观看视频 | 亚洲一区二区三区四区五区黄| 国产三级一区二区| 精品裸体舞一区二区三区| 欧美一区二区三区四区五区| 欧美综合久久久| 欧美性一区二区| 欧美性一级生活| 欧美日韩亚州综合| 欧美性欧美巨大黑白大战| 一本色道久久综合狠狠躁的推荐| 成人av在线网站| 色综合久久99| 欧美三级日韩在线| 欧美日韩一区三区| 欧美精品一二三区| 777欧美精品| 欧美精品一区二区三区一线天视频 | 亚洲欧美日韩国产一区二区三区 | 一区二区三区免费看视频| 国产精品成人免费精品自在线观看| 久久精品人人爽人人爽| 久久免费视频一区| 中文字幕 久热精品 视频在线| 欧美国产日韩一二三区| 亚洲日穴在线视频| 婷婷国产在线综合| 国产麻豆视频一区| 成人精品亚洲人成在线| 色视频欧美一区二区三区| 在线观看中文字幕不卡| 欧美一区二区三区在线电影| 日韩亚洲欧美综合| 国产欧美精品一区二区色综合| 国产精品三级在线观看| 亚洲精品国产成人久久av盗摄| 亚洲福利国产精品| 韩国欧美国产1区| 99久久99久久久精品齐齐| 欧美日韩国产一级片| 久久久www成人免费无遮挡大片 | 欧美一区二区视频在线观看2022| 欧美一级理论片| 国产欧美日韩三区| 亚洲一区二区五区| 美腿丝袜一区二区三区| www.成人在线| 3d动漫精品啪啪一区二区竹菊 | 日本道精品一区二区三区| 欧美日韩高清影院| 国产欧美一区视频| 亚洲国产精品一区二区尤物区| 久久99热99| 91久久线看在观草草青青| 精品国产露脸精彩对白| 亚洲男同1069视频| 国产一区二区不卡| 欧美日韩一二区| 中文字幕乱码久久午夜不卡| 香蕉成人啪国产精品视频综合网 | 国产在线不卡视频| 欧美探花视频资源| 亚洲国产高清aⅴ视频| 久久草av在线| 精品视频一区二区不卡|