stdschedulerfactory.java

来自「Quartz 是个开源的作业调度框架」· Java 代码 · 共 1,192 行 · 第 1/4 页

JAVA
1,192
字号
                    "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);        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 org.quartz.impl.jdbcjobstore.JobStoreSupport) {            ((org.quartz.impl.jdbcjobstore.JobStoreSupport) js)				.setInstanceId(schedInstId);            ((org.quartz.impl.jdbcjobstore.JobStoreSupport) js)            	.setInstanceName(schedName);        }                // 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 dsDriver = pp                .getStringProperty(PROP_DATASOURCE_DRIVER, null);                String dsURL = pp.getStringProperty(PROP_DATASOURCE_URL, null);                boolean dsAlwaysLookup = pp.getBooleanProperty(                        PROP_DATASOURCE_JNDI_ALWAYS_LOOKUP, false);                String dsUser = pp.getStringProperty(PROP_DATASOURCE_USER, "");                String dsPass = pp.getStringProperty(PROP_DATASOURCE_PASSWORD, "");                int dsCnt = pp.getIntProperty(PROP_DATASOURCE_MAX_CONNECTIONS, 10);                String dsJndi = pp                        .getStringProperty(PROP_DATASOURCE_JNDI_URL, null);                String dsJndiInitial = pp.getStringProperty(                        PROP_DATASOURCE_JNDI_INITIAL, null);                String dsJndiProvider = pp.getStringProperty(                        PROP_DATASOURCE_JNDI_PROVDER, null);                String dsJndiPrincipal = pp.getStringProperty(                        PROP_DATASOURCE_JNDI_PRINCIPAL, null);                String dsJndiCredentials = pp.getStringProperty(                        PROP_DATASOURCE_JNDI_CREDENTIALS, null);                String dsValidation = pp.getStringProperty(                        PROP_DATASOURCE_VALIDATION_QUERY, null);                        if (dsJndi != null) {                    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 {                    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;            }            jobListeners[i] = listener;        }                       // Set up any TriggerListeners        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        String[] triggerListenerNames = cfg.getPropertyGroups(PROP_TRIGGER_LISTENER_PREFIX);        TriggerListener[] triggerListeners = new TriggerListener[triggerListenerNames.length];        for (int i = 0; i < triggerListenerNames.length; i++) {            Properties lp = cfg.getPropertyGroup(PROP_TRIGGER_LISTENER_PREFIX + "."                    + triggerListenerNames[i], true);                        String listenerClass = lp.getProperty(PROP_LISTENER_CLASS, null);            if (listenerClass == null) {                initException = new SchedulerException(                        "TriggerListener class not specified for listener '"                                + triggerListenerNames[i] + "'",                        SchedulerException.ERR_BAD_CONFIGURATION);                throw initException;            }            TriggerListener listener = null;            try {               listener = (TriggerListener)                       loadHelper.loadClass(listenerClass).newInstance();            } catch (Exception e) {                initException = new SchedulerException(                        "TriggerListener class '" + listenerClass                                + "' could not be instantiated.", e);                initException                        .setErrorCode(SchedulerException.ERR_BAD_CONFIGURATION);

⌨️ 快捷键说明

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