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

📄 stdschedulerfactory.java

📁 Quartz is a full-featured, open source job scheduling system that can be integrated with, or used al
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            } catch (Exception e) {                throw new SchedulerConfigException(                        "Unable to instantiate JobFactory class: "                                + e.getMessage(), e);            }            tProps = cfg.getPropertyGroup(PROP_SCHED_JOB_FACTORY_PREFIX, true);            try {                setBeanProps(jobFactory, tProps);            } catch (Exception e) {                initException = new SchedulerException("JobFactory class '"                        + jobFactoryClass + "' props could not be configured.", e);                initException                        .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }        }                        InstanceIdGenerator instanceIdGenerator = null;        if(instanceIdGeneratorClass != null) {            try {                instanceIdGenerator = (InstanceIdGenerator) loadHelper.loadClass(instanceIdGeneratorClass)                    .newInstance();            } catch (Exception e) {                throw new SchedulerConfigException(                        "Unable to instantiate InstanceIdGenerator class: "                        + e.getMessage(), e);            }                        tProps = cfg.getPropertyGroup(PROP_SCHED_INSTANCE_ID_GENERATOR_PREFIX, true);            try {                setBeanProps(instanceIdGenerator, tProps);            } catch (Exception e) {                initException = new SchedulerException("InstanceIdGenerator class '"                        + instanceIdGeneratorClass + "' props could not be configured.", e);                initException                        .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }                   }                // Get ThreadPool Properties        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        String tpClass = cfg.getStringProperty(PROP_THREAD_POOL_CLASS, null);        if (tpClass == null) {            initException = new SchedulerException(                    "ThreadPool class not specified. ",                    SchedulerException.ERR_BAD_CONFIGURATION);            throw initException;        }        try {            tp = (ThreadPool) loadHelper.loadClass(tpClass).newInstance();        } catch (Exception e) {            initException = new SchedulerException("ThreadPool class '"                    + tpClass + "' could not be instantiated.", e);            initException                    .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);            throw initException;        }        tProps = cfg.getPropertyGroup(PROP_THREAD_POOL_PREFIX, true);        try {            setBeanProps(tp, tProps);        } catch (Exception e) {            initException = new SchedulerException("ThreadPool class '"                    + tpClass + "' props could not be configured.", e);            initException                    .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);            throw initException;        }        // Get JobStore Properties        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        String jsClass = cfg.getStringProperty(PROP_JOB_STORE_CLASS,                RAMJobStore.class.getName());        if (jsClass == null) {            initException = new SchedulerException(                    "JobStore class not specified. ",                    SchedulerException.ERR_BAD_CONFIGURATION);            throw initException;        }        try {            js = (JobStore) loadHelper.loadClass(jsClass).newInstance();        } catch (Exception e) {            initException = new SchedulerException("JobStore class '" + jsClass                    + "' could not be instantiated.", e);            initException                    .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);            throw initException;        }        tProps = cfg.getPropertyGroup(PROP_JOB_STORE_PREFIX, true, new String[] {PROP_JOB_STORE_LOCK_HANDLER_PREFIX});        try {            setBeanProps(js, tProps);        } catch (Exception e) {            initException = new SchedulerException("JobStore class '" + jsClass                    + "' props could not be configured.", e);            initException                    .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);            throw initException;        }        if (js instanceof JobStoreSupport) {            ((JobStoreSupport)js).setInstanceId(schedInstId);            ((JobStoreSupport)js).setInstanceName(schedName);                        // Install custom lock handler (Semaphore)            String lockHandlerClass = cfg.getStringProperty(PROP_JOB_STORE_LOCK_HANDLER_CLASS);            if (lockHandlerClass != null) {                try {                    Semaphore lockHandler = (Semaphore)loadHelper.loadClass(lockHandlerClass).newInstance();                                        tProps = cfg.getPropertyGroup(PROP_JOB_STORE_LOCK_HANDLER_PREFIX, true);                    // If this lock handler requires the table prefix, add it to its properties.                    if (lockHandler instanceof TablePrefixAware) {                        tProps.setProperty(                            PROP_TABLE_PREFIX, ((JobStoreSupport)js).getTablePrefix());                    }                                        try {                        setBeanProps(lockHandler, tProps);                    } catch (Exception e) {                        initException = new SchedulerException("JobStore LockHandler class '" + lockHandlerClass                                + "' props could not be configured.", e);                        initException.setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                        throw initException;                    }                                        ((JobStoreSupport)js).setLockHandler(lockHandler);                    getLog().info("Using custom data access locking (synchronization): " + lockHandlerClass);                } catch (Exception e) {                    initException = new SchedulerException("JobStore LockHandler class '" + lockHandlerClass                            + "' could not be instantiated.", e);                    initException.setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                    throw initException;                }            }        }                // Set up any DataSources        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        String[] dsNames = cfg.getPropertyGroups(PROP_DATASOURCE_PREFIX);        for (int i = 0; i < dsNames.length; i++) {            PropertiesParser pp = new PropertiesParser(cfg.getPropertyGroup(                    PROP_DATASOURCE_PREFIX + "." + dsNames[i], true));            String cpClass = pp.getStringProperty(PROP_CONNECTION_PROVIDER_CLASS, null);            // custom connectionProvider...            if(cpClass != null) {                ConnectionProvider cp = null;                try {                    cp = (ConnectionProvider) loadHelper.loadClass(cpClass).newInstance();                } catch (Exception e) {                    initException = new SchedulerException("ConnectionProvider class '" + cpClass                            + "' could not be instantiated.", e);                    initException                            .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                    throw initException;                }                try {                    // remove the class name, so it isn't attempted to be set                    pp.getUnderlyingProperties().remove(                            PROP_CONNECTION_PROVIDER_CLASS);                                        setBeanProps(cp, pp.getUnderlyingProperties());                } catch (Exception e) {                    initException = new SchedulerException("ConnectionProvider class '" + cpClass                            + "' props could not be configured.", e);                    initException                            .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                    throw initException;                }                dbMgr = DBConnectionManager.getInstance();                dbMgr.addConnectionProvider(dsNames[i], cp);            } else {                String dsJndi = pp.getStringProperty(PROP_DATASOURCE_JNDI_URL, null);                        if (dsJndi != null) {                    boolean dsAlwaysLookup = pp.getBooleanProperty(                            PROP_DATASOURCE_JNDI_ALWAYS_LOOKUP);                    String dsJndiInitial = pp.getStringProperty(                            PROP_DATASOURCE_JNDI_INITIAL);                    String dsJndiProvider = pp.getStringProperty(                            PROP_DATASOURCE_JNDI_PROVDER);                    String dsJndiPrincipal = pp.getStringProperty(                            PROP_DATASOURCE_JNDI_PRINCIPAL);                    String dsJndiCredentials = pp.getStringProperty(                            PROP_DATASOURCE_JNDI_CREDENTIALS);                    Properties props = null;                    if (null != dsJndiInitial || null != dsJndiProvider                            || null != dsJndiPrincipal || null != dsJndiCredentials) {                        props = new Properties();                        if (dsJndiInitial != null) {                            props.put(PROP_DATASOURCE_JNDI_INITIAL,                                    dsJndiInitial);                        }                        if (dsJndiProvider != null) {                            props.put(PROP_DATASOURCE_JNDI_PROVDER,                                    dsJndiProvider);                        }                        if (dsJndiPrincipal != null) {                            props.put(PROP_DATASOURCE_JNDI_PRINCIPAL,                                    dsJndiPrincipal);                        }                        if (dsJndiCredentials != null) {                            props.put(PROP_DATASOURCE_JNDI_CREDENTIALS,                                    dsJndiCredentials);                        }                    }                    JNDIConnectionProvider cp = new JNDIConnectionProvider(dsJndi,                            props, dsAlwaysLookup);                    dbMgr = DBConnectionManager.getInstance();                    dbMgr.addConnectionProvider(dsNames[i], cp);                } else {                    String dsDriver = pp.getStringProperty(PROP_DATASOURCE_DRIVER);                    String dsURL = pp.getStringProperty(PROP_DATASOURCE_URL);                    String dsUser = pp.getStringProperty(PROP_DATASOURCE_USER, "");                    String dsPass = pp.getStringProperty(PROP_DATASOURCE_PASSWORD, "");                    int dsCnt = pp.getIntProperty(PROP_DATASOURCE_MAX_CONNECTIONS, 10);                    String dsValidation = pp.getStringProperty(PROP_DATASOURCE_VALIDATION_QUERY);                                        if (dsDriver == null) {                        initException = new SchedulerException(                                "Driver not specified for DataSource: "                                        + dsNames[i]);                        throw initException;                    }                    if (dsURL == null) {                        initException = new SchedulerException(                                "DB URL not specified for DataSource: "                                        + dsNames[i]);                        throw initException;                    }                    try {                        PoolingConnectionProvider cp = new PoolingConnectionProvider(                                dsDriver, dsURL, dsUser, dsPass, dsCnt,                                dsValidation);                        dbMgr = DBConnectionManager.getInstance();                        dbMgr.addConnectionProvider(dsNames[i], cp);                    } catch (SQLException sqle) {                        initException = new SchedulerException(                                "Could not initialize DataSource: " + dsNames[i],                                sqle);                        throw initException;                    }                }                            }                    }        // Set up any SchedulerPlugins        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        String[] pluginNames = cfg.getPropertyGroups(PROP_PLUGIN_PREFIX);        SchedulerPlugin[] plugins = new SchedulerPlugin[pluginNames.length];        for (int i = 0; i < pluginNames.length; i++) {            Properties pp = cfg.getPropertyGroup(PROP_PLUGIN_PREFIX + "."                    + pluginNames[i], true);            String plugInClass = pp.getProperty(PROP_PLUGIN_CLASS, null);            if (plugInClass == null) {                initException = new SchedulerException(                        "SchedulerPlugin class not specified for plugin '"                                + pluginNames[i] + "'",                        SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }            SchedulerPlugin plugin = null;            try {                plugin = (SchedulerPlugin)                        loadHelper.loadClass(plugInClass).newInstance();            } catch (Exception e) {                initException = new SchedulerException(                        "SchedulerPlugin class '" + plugInClass                                + "' could not be instantiated.", e);                initException                        .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }            try {                setBeanProps(plugin, pp);            } catch (Exception e) {                initException = new SchedulerException(                        "JobStore SchedulerPlugin '" + plugInClass                                + "' props could not be configured.", e);                initException                        .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }                        plugins[i] = plugin;        }        // Set up any JobListeners        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        Class[] strArg = new Class[] { String.class };        String[] jobListenerNames = cfg.getPropertyGroups(PROP_JOB_LISTENER_PREFIX);        JobListener[] jobListeners = new JobListener[jobListenerNames.length];        for (int i = 0; i < jobListenerNames.length; i++) {            Properties lp = cfg.getPropertyGroup(PROP_JOB_LISTENER_PREFIX + "."                    + jobListenerNames[i], true);                        String listenerClass = lp.getProperty(PROP_LISTENER_CLASS, null);            if (listenerClass == null) {                initException = new SchedulerException(                        "JobListener class not specified for listener '"                                + jobListenerNames[i] + "'",                        SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }            JobListener listener = null;            try {                listener = (JobListener)                       loadHelper.loadClass(listenerClass).newInstance();            } catch (Exception e) {                initException = new SchedulerException(                        "JobListener class '" + listenerClass                                + "' could not be instantiated.", e);                initException                        .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }            try {                Method nameSetter = listener.getClass().getMethod("setName", strArg);                if(nameSetter != null) {                    nameSetter.invoke(listener, new Object[] {jobListenerNames[i] } );                }                setBeanProps(listener, lp);            } catch (Exception e) {                initException = new SchedulerException(                        "JobListener '" + listenerClass                                + "' props could not be configured.", e);                initException                        .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }

⌨️ 快捷键说明

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