⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdschedulerfactory.java

📁 Quartz is a full-featured, open source job scheduling system that can be integrated with, or used al
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                        + propFileName + "' could not be read.", ioe);                throw initException;            }        } else if (requestedFile != null) {            InputStream in =                 Thread.currentThread().getContextClassLoader().getResourceAsStream(requestedFile);            if(in == null) {                initException = new SchedulerException("Properties file: '"                    + requestedFile + "' could not be found.");                throw initException;            }                        propSrc = "specified file: '" + requestedFile + "' in the class resource path.";                        try {                props.load(new BufferedInputStream(in));            } catch (IOException ioe) {                initException = new SchedulerException("Properties file: '"                        + requestedFile + "' could not be read.", ioe);                throw initException;            }                    } else {            propSrc = "default resource file in Quartz package: 'quartz.properties'";            InputStream in = getClass().getClassLoader().getResourceAsStream(                    "quartz.properties");            if (in == null) {                in = getClass().getClassLoader().getResourceAsStream(                        "/quartz.properties");            }            if (in == null) {                in = getClass().getClassLoader().getResourceAsStream(                        "org/quartz/quartz.properties");            }            if (in == null) {                initException = new SchedulerException(                        "Default quartz.properties not found in class path");                throw initException;            }            try {                props.load(in);            } catch (IOException ioe) {                initException = new SchedulerException(                        "Resource properties file: 'org/quartz/quartz.properties' "                                + "could not be read from the classpath.", ioe);                throw initException;            }        }                initialize(overrideWithSysProps(props));    }    /**     * Add all System properties to the given <code>props</code>.  Will override     * any properties that already exist in the given <code>props</code>.     */    private Properties overrideWithSysProps(Properties props) {        Properties sysProps = null;        try {            sysProps = System.getProperties();        } catch (AccessControlException e) {            getLog().warn(                "Skipping overriding quartz properties with System properties " +                "during initialization because of an AccessControlException.  " +                "This is likely due to not having read/write access for " +                "java.util.PropertyPermission as required by java.lang.System.getProperties().  " +                "To resolve this warning, either add this permission to your policy file or " +                "use a non-default version of initialize().",                 e);        }                if (sysProps != null) {            props.putAll(sysProps);        }        return props;    }    /**     * <p>     * Initialize the <code>{@link org.quartz.SchedulerFactory}</code> with     * the contenents of the <code>Properties</code> file with the given     * name.     * </p>     */    public void initialize(String filename) throws SchedulerException {        // short-circuit if already initialized        if (cfg != null) {            return;        }                if (initException != null) {            throw initException;        }        InputStream is = null;        Properties props = new Properties();        is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);                 try {            if(is != null) {                is = new BufferedInputStream(is);                propSrc = "the specified file : '" + filename + "' from the class resource path.";            } else {                is = new BufferedInputStream(new FileInputStream(filename));                propSrc = "the specified file : '" + filename + "'";            }            props.load(is);        } catch (IOException ioe) {            initException = new SchedulerException("Properties file: '"                    + filename + "' could not be read.", ioe);            throw initException;        }        initialize(props);    }    /**     * <p>     * Initialize the <code>{@link org.quartz.SchedulerFactory}</code> with     * the contenents of the <code>Properties</code> file opened with the     * given <code>InputStream</code>.     * </p>     */    public void initialize(InputStream propertiesStream)        throws SchedulerException {        // short-circuit if already initialized        if (cfg != null) {            return;        }                if (initException != null) {            throw initException;        }        Properties props = new Properties();        if (propertiesStream != null) {            try {                props.load(propertiesStream);                propSrc = "an externally opened InputStream.";            } catch (IOException e) {                initException = new SchedulerException(                        "Error loading property data from InputStream", e);                throw initException;            }        } else {            initException = new SchedulerException(                    "Error loading property data from InputStream - InputStream is null.");            throw initException;        }        initialize(props);    }    /**     * <p>     * Initialize the <code>{@link org.quartz.SchedulerFactory}</code> with     * the contenents of the given <code>Properties</code> object.     * </p>     */    public void initialize(Properties props) throws SchedulerException {        if (propSrc == null) {            propSrc = "an externally provided properties instance.";        }        this.cfg = new PropertiesParser(props);    }    private Scheduler instantiate() throws SchedulerException {        if (cfg == null) {            initialize();        }        if (initException != null) {            throw initException;        }        JobStore js = null;        ThreadPool tp = null;        QuartzScheduler qs = null;        SchedulingContext schedCtxt = null;        DBConnectionManager dbMgr = null;        String instanceIdGeneratorClass = null;        Properties tProps = null;        String userTXLocation = null;        boolean wrapJobInTx = false;        boolean autoId = false;        long idleWaitTime = -1;        long dbFailureRetry = -1;        String classLoadHelperClass;        String jobFactoryClass;        SchedulerRepository schedRep = SchedulerRepository.getInstance();        // Get Scheduler Properties        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        String schedName = cfg.getStringProperty(PROP_SCHED_INSTANCE_NAME,                "QuartzScheduler");        String threadName = cfg.getStringProperty(PROP_SCHED_THREAD_NAME,                schedName + "_QuartzSchedulerThread");                String schedInstId = cfg.getStringProperty(PROP_SCHED_INSTANCE_ID,                DEFAULT_INSTANCE_ID);        if (schedInstId.equals(AUTO_GENERATE_INSTANCE_ID)) {            autoId = true;            instanceIdGeneratorClass = cfg.getStringProperty(                    PROP_SCHED_INSTANCE_ID_GENERATOR_CLASS,                    "org.quartz.simpl.SimpleInstanceIdGenerator");        }                userTXLocation = cfg.getStringProperty(PROP_SCHED_USER_TX_URL,                userTXLocation);        if (userTXLocation != null && userTXLocation.trim().length() == 0) {            userTXLocation = null;        }        classLoadHelperClass = cfg.getStringProperty(                PROP_SCHED_CLASS_LOAD_HELPER_CLASS,                "org.quartz.simpl.CascadingClassLoadHelper");        wrapJobInTx = cfg.getBooleanProperty(PROP_SCHED_WRAP_JOB_IN_USER_TX,                wrapJobInTx);        jobFactoryClass = cfg.getStringProperty(                PROP_SCHED_JOB_FACTORY_CLASS, null);        idleWaitTime = cfg.getLongProperty(PROP_SCHED_IDLE_WAIT_TIME,                idleWaitTime);        dbFailureRetry = cfg.getLongProperty(                PROP_SCHED_DB_FAILURE_RETRY_INTERVAL, dbFailureRetry);        boolean makeSchedulerThreadDaemon =             cfg.getBooleanProperty(PROP_SCHED_MAKE_SCHEDULER_THREAD_DAEMON);                boolean jmxExport = cfg.getBooleanProperty(PROP_SCHED_JMX_EXPORT);        boolean jmxProxy = cfg.getBooleanProperty(PROP_SCHED_JMX_PROXY);        String jmxProxyClass = cfg.getStringProperty(PROP_SCHED_JMX_PROXY_CLASS);        String jmxObjectName = cfg.getStringProperty(PROP_SCHED_JMX_OBJECT_NAME);                boolean rmiExport = cfg.getBooleanProperty(PROP_SCHED_RMI_EXPORT, false);        boolean rmiProxy = cfg.getBooleanProperty(PROP_SCHED_RMI_PROXY, false);        String rmiHost = cfg.getStringProperty(PROP_SCHED_RMI_HOST, "localhost");        int rmiPort = cfg.getIntProperty(PROP_SCHED_RMI_PORT, 1099);        int rmiServerPort = cfg.getIntProperty(PROP_SCHED_RMI_SERVER_PORT, -1);        String rmiCreateRegistry = cfg.getStringProperty(                PROP_SCHED_RMI_CREATE_REGISTRY,                QuartzSchedulerResources.CREATE_REGISTRY_NEVER);        String rmiBindName = cfg.getStringProperty(PROP_SCHED_RMI_BIND_NAME);        if (jmxProxy && rmiProxy) {            throw new SchedulerConfigException("Cannot proxy both RMI and JMX.");        }                Properties schedCtxtProps = cfg.getPropertyGroup(PROP_SCHED_CONTEXT_PREFIX, true);        // If Proxying to remote scheduler, short-circuit here...        // ~~~~~~~~~~~~~~~~~~        if (rmiProxy) {            if (autoId) {                  schedInstId = DEFAULT_INSTANCE_ID;            }                            schedCtxt = new SchedulingContext();            schedCtxt.setInstanceId(schedInstId);            String uid = (rmiBindName == null) ? QuartzSchedulerResources.getUniqueIdentifier(                    schedName, schedInstId) : rmiBindName;            RemoteScheduler remoteScheduler = new RemoteScheduler(schedCtxt,                    uid, rmiHost, rmiPort);            schedRep.bind(remoteScheduler);            return remoteScheduler;        }                // Create class load helper        ClassLoadHelper loadHelper = null;        try {            loadHelper = (ClassLoadHelper) loadClass(classLoadHelperClass)                    .newInstance();        } catch (Exception e) {            throw new SchedulerConfigException(                    "Unable to instantiate class load helper class: "                            + e.getMessage(), e);        }        loadHelper.initialize();                // If Proxying to remote JMX scheduler, short-circuit here...        // ~~~~~~~~~~~~~~~~~~        if (jmxProxy) {            if (autoId) {                  schedInstId = DEFAULT_INSTANCE_ID;            }            if (jmxProxyClass == null) {                throw new SchedulerConfigException("No JMX Proxy Scheduler class provided");            }            RemoteMBeanScheduler jmxScheduler = null;            try {                jmxScheduler = (RemoteMBeanScheduler)loadHelper.loadClass(jmxProxyClass)                        .newInstance();            } catch (Exception e) {                throw new SchedulerConfigException(                        "Unable to instantiate RemoteMBeanScheduler class.", e);            }                        schedCtxt = new SchedulingContext();            schedCtxt.setInstanceId(schedInstId);                        if (jmxObjectName == null) {                jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId);            }                        jmxScheduler.setSchedulingContext(schedCtxt);            jmxScheduler.setSchedulerObjectName(jmxObjectName);                                    tProps = cfg.getPropertyGroup(PROP_SCHED_JMX_PROXY, true);            try {                setBeanProps(jmxScheduler, tProps);            } catch (Exception e) {                initException = new SchedulerException("RemoteMBeanScheduler class '"                        + jmxProxyClass + "' props could not be configured.", e);                initException.setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }                        jmxScheduler.initialize();                        schedRep.bind(jmxScheduler);            return jmxScheduler;        }                JobFactory jobFactory = null;        if(jobFactoryClass != null) {            try {                jobFactory = (JobFactory) loadHelper.loadClass(jobFactoryClass)                        .newInstance();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -