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

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

?? schedulerfactorybean.java

?? spring framework 2.5.4源代碼
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
			}

			((StdSchedulerFactory) schedulerFactory).initialize(mergedProps);
		}
	}

	/**
	 * Create the Scheduler instance for the given factory and scheduler name.
	 * Called by afterPropertiesSet.
	 * <p>Default implementation invokes SchedulerFactory's <code>getScheduler</code>
	 * method. Can be overridden for custom Scheduler creation.
	 * @param schedulerFactory the factory to create the Scheduler with
	 * @param schedulerName the name of the scheduler to create
	 * @return the Scheduler instance
	 * @throws SchedulerException if thrown by Quartz methods
	 * @see #afterPropertiesSet
	 * @see org.quartz.SchedulerFactory#getScheduler
	 */
	protected Scheduler createScheduler(SchedulerFactory schedulerFactory, String schedulerName)
			throws SchedulerException {

		// StdSchedulerFactory's default "getScheduler" implementation
		// uses the scheduler name specified in the Quartz properties,
		// which we have set before (in "initSchedulerFactory").
		return schedulerFactory.getScheduler();
	}

	/**
	 * Expose the specified context attributes and/or the current
	 * ApplicationContext in the Quartz SchedulerContext.
	 */
	private void populateSchedulerContext() throws SchedulerException {
		// Put specified objects into Scheduler context.
		if (this.schedulerContextMap != null) {
			this.scheduler.getContext().putAll(this.schedulerContextMap);
		}

		// Register ApplicationContext in Scheduler context.
		if (this.applicationContextSchedulerContextKey != null) {
			if (this.applicationContext == null) {
				throw new IllegalStateException(
				    "SchedulerFactoryBean needs to be set up in an ApplicationContext " +
				    "to be able to handle an 'applicationContextSchedulerContextKey'");
			}
			this.scheduler.getContext().put(this.applicationContextSchedulerContextKey, this.applicationContext);
		}
	}


	/**
	 * Register all specified listeners with the Scheduler.
	 */
	private void registerListeners() throws SchedulerException {
		if (this.schedulerListeners != null) {
			for (int i = 0; i < this.schedulerListeners.length; i++) {
				this.scheduler.addSchedulerListener(this.schedulerListeners[i]);
			}
		}
		if (this.globalJobListeners != null) {
			for (int i = 0; i < this.globalJobListeners.length; i++) {
				this.scheduler.addGlobalJobListener(this.globalJobListeners[i]);
			}
		}
		if (this.jobListeners != null) {
			for (int i = 0; i < this.jobListeners.length; i++) {
				this.scheduler.addJobListener(this.jobListeners[i]);
			}
		}
		if (this.globalTriggerListeners != null) {
			for (int i = 0; i < this.globalTriggerListeners.length; i++) {
				this.scheduler.addGlobalTriggerListener(this.globalTriggerListeners[i]);
			}
		}
		if (this.triggerListeners != null) {
			for (int i = 0; i < this.triggerListeners.length; i++) {
				this.scheduler.addTriggerListener(this.triggerListeners[i]);
			}
		}
	}

	/**
	 * Register jobs and triggers (within a transaction, if possible).
	 */
	private void registerJobsAndTriggers() throws SchedulerException {
		TransactionStatus transactionStatus = null;
		if (this.transactionManager != null) {
			transactionStatus = this.transactionManager.getTransaction(new DefaultTransactionDefinition());
		}
		try {

			if (this.jobSchedulingDataLocations != null) {
				ResourceJobSchedulingDataProcessor dataProcessor = new ResourceJobSchedulingDataProcessor();
				if (this.applicationContext != null) {
					dataProcessor.setResourceLoader(this.applicationContext);
				}
				for (int i = 0; i < this.jobSchedulingDataLocations.length; i++) {
					dataProcessor.processFileAndScheduleJobs(
					    this.jobSchedulingDataLocations[i], this.scheduler, this.overwriteExistingJobs);
				}
			}

			// Register JobDetails.
			if (this.jobDetails != null) {
				for (Iterator it = this.jobDetails.iterator(); it.hasNext();) {
					JobDetail jobDetail = (JobDetail) it.next();
					addJobToScheduler(jobDetail);
				}
			}
			else {
				// Create empty list for easier checks when registering triggers.
				this.jobDetails = new LinkedList();
			}

			// Register Calendars.
			if (this.calendars != null) {
				for (Iterator it = this.calendars.keySet().iterator(); it.hasNext();) {
					String calendarName = (String) it.next();
					Calendar calendar = (Calendar) this.calendars.get(calendarName);
					this.scheduler.addCalendar(calendarName, calendar, true, true);
				}
			}

			// Register Triggers.
			if (this.triggers != null) {
				for (Iterator it = this.triggers.iterator(); it.hasNext();) {
					Trigger trigger = (Trigger) it.next();
					addTriggerToScheduler(trigger);
				}
			}
		}

		catch (Throwable ex) {
			if (transactionStatus != null) {
				try {
					this.transactionManager.rollback(transactionStatus);
				}
				catch (TransactionException tex) {
					logger.error("Job registration exception overridden by rollback exception", ex);
					throw tex;
				}
			}
			if (ex instanceof SchedulerException) {
				throw (SchedulerException) ex;
			}
			if (ex instanceof Exception) {
				throw new SchedulerException(
						"Registration of jobs and triggers failed: " + ex.getMessage(), (Exception) ex);
			}
			throw new SchedulerException("Registration of jobs and triggers failed: " + ex.getMessage());
		}

		if (transactionStatus != null) {
			this.transactionManager.commit(transactionStatus);
		}
	}

	/**
	 * Add the given job to the Scheduler, if it doesn't already exist.
	 * Overwrites the job in any case if "overwriteExistingJobs" is set.
	 * @param jobDetail the job to add
	 * @return <code>true</code> if the job was actually added,
	 * <code>false</code> if it already existed before
	 * @see #setOverwriteExistingJobs
	 */
	private boolean addJobToScheduler(JobDetail jobDetail) throws SchedulerException {
		if (this.overwriteExistingJobs ||
		    this.scheduler.getJobDetail(jobDetail.getName(), jobDetail.getGroup()) == null) {
			this.scheduler.addJob(jobDetail, true);
			return true;
		}
		else {
			return false;
		}
	}

	/**
	 * Add the given trigger to the Scheduler, if it doesn't already exist.
	 * Overwrites the trigger in any case if "overwriteExistingJobs" is set.
	 * @param trigger the trigger to add
	 * @return <code>true</code> if the trigger was actually added,
	 * <code>false</code> if it already existed before
	 * @see #setOverwriteExistingJobs
	 */
	private boolean addTriggerToScheduler(Trigger trigger) throws SchedulerException {
		boolean triggerExists = (this.scheduler.getTrigger(trigger.getName(), trigger.getGroup()) != null);
		if (!triggerExists || this.overwriteExistingJobs) {
			// Check if the Trigger is aware of an associated JobDetail.
			if (trigger instanceof JobDetailAwareTrigger) {
				JobDetail jobDetail = ((JobDetailAwareTrigger) trigger).getJobDetail();
				// Automatically register the JobDetail too.
				if (!this.jobDetails.contains(jobDetail) && addJobToScheduler(jobDetail)) {
					this.jobDetails.add(jobDetail);
				}
			}
			if (!triggerExists) {
				try {
					this.scheduler.scheduleJob(trigger);
				}
				catch (ObjectAlreadyExistsException ex) {
					if (logger.isDebugEnabled()) {
						logger.debug("Unexpectedly found existing trigger, assumably due to cluster race condition: " +
								ex.getMessage() + " - can safely be ignored");
					}
					if (this.overwriteExistingJobs) {
						this.scheduler.rescheduleJob(trigger.getName(), trigger.getGroup(), trigger);
					}
				}
			}
			else {
				this.scheduler.rescheduleJob(trigger.getName(), trigger.getGroup(), trigger);
			}
			return true;
		}
		else {
			return false;
		}
	}


	/**
	 * Start the Quartz Scheduler, respecting the "startupDelay" setting.
	 * @param scheduler the Scheduler to start
	 * @param startupDelay the number of seconds to wait before starting
	 * the Scheduler asynchronously
	 */
	protected void startScheduler(final Scheduler scheduler, final int startupDelay) throws SchedulerException {
		if (startupDelay <= 0) {
			logger.info("Starting Quartz Scheduler now");
			scheduler.start();
		}
		else {
			if (logger.isInfoEnabled()) {
				logger.info("Will start Quartz Scheduler [" + scheduler.getSchedulerName() +
						"] in " + startupDelay + " seconds");
			}
			Thread schedulerThread = new Thread() {
				public void run() {
					try {
						Thread.sleep(startupDelay * 1000);
					}
					catch (InterruptedException ex) {
						// simply proceed
					}
					if (logger.isInfoEnabled()) {
						logger.info("Starting Quartz Scheduler now, after delay of " + startupDelay + " seconds");
					}
					try {
						scheduler.start();
					}
					catch (SchedulerException ex) {
						throw new SchedulingException("Could not start Quartz Scheduler after delay", ex);
					}
				}
			};
			schedulerThread.setName("Quartz Scheduler [" + scheduler.getSchedulerName() + "]");
			schedulerThread.start();
		}
	}


	//---------------------------------------------------------------------
	// Implementation of FactoryBean interface
	//---------------------------------------------------------------------

	public Object getObject() {
		return this.scheduler;
	}

	public Class getObjectType() {
		return (this.scheduler != null) ? this.scheduler.getClass() : Scheduler.class;
	}

	public boolean isSingleton() {
		return true;
	}


	//---------------------------------------------------------------------
	// Implementation of Lifecycle interface
	//---------------------------------------------------------------------

	public void start() throws SchedulingException {
		if (this.scheduler != null) {
			try {
				this.scheduler.start();
			}
			catch (SchedulerException ex) {
				throw new SchedulingException("Could not start Quartz Scheduler", ex);
			}
		}
	}

	public void stop() throws SchedulingException {
		if (this.scheduler != null) {
			try {
				this.scheduler.standby();
			}
			catch (SchedulerException ex) {
				throw new SchedulingException("Could not stop Quartz Scheduler", ex);
			}
		}
	}

	public boolean isRunning() throws SchedulingException {
		if (this.scheduler != null) {
			try {
				return !this.scheduler.isInStandbyMode();
			}
			catch (SchedulerException ex) {
				return false;
			}
		}
		return false;
	}


	//---------------------------------------------------------------------
	// Implementation of DisposableBean interface
	//---------------------------------------------------------------------

	/**
	 * Shut down the Quartz scheduler on bean factory shutdown,
	 * stopping all scheduled jobs.
	 */
	public void destroy() throws SchedulerException {
		logger.info("Shutting down Quartz Scheduler");
		this.scheduler.shutdown(this.waitForJobsToCompleteOnShutdown);
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av一区二区| 高清国产午夜精品久久久久久| 奇米888四色在线精品| 成人性视频网站| 欧美精品日韩一本| 欧美激情综合网| 日韩精品久久久久久| 日本高清不卡视频| 久久久综合视频| 午夜精品久久久久久久蜜桃app| 成人午夜免费电影| 精品免费视频一区二区| 亚洲午夜在线视频| 99re这里只有精品首页| 久久久久久久久99精品| 国产原创一区二区三区| 欧美色国产精品| 成人欧美一区二区三区白人| 国产黄色91视频| www国产精品av| 精品在线你懂的| 91精品欧美福利在线观看| 亚洲精品视频一区| 91丨九色丨黑人外教| 中文一区二区在线观看| 成人国产精品免费观看动漫| 久久久精品免费网站| 久久99久久99精品免视看婷婷 | 亚洲精品乱码久久久久久| 国产精品一区二区男女羞羞无遮挡| 日本丶国产丶欧美色综合| 亚洲乱码国产乱码精品精98午夜| 99久久er热在这里只有精品15| 亚洲国产精品av| 成人app软件下载大全免费| 国产欧美综合在线观看第十页 | 免费国产亚洲视频| 91精品国产高清一区二区三区 | 日韩欧美一区二区在线视频| 蜜桃视频免费观看一区| 欧美伦理影视网| 美女诱惑一区二区| 亚洲精品在线观| 国产剧情一区二区| 国产免费成人在线视频| 91在线你懂得| 五月天欧美精品| 精品少妇一区二区三区视频免付费| 久久国产夜色精品鲁鲁99| 久久精品亚洲麻豆av一区二区 | 亚洲人快播电影网| 欧美在线观看一区| 五月激情综合网| 久久久久综合网| 一道本成人在线| 日日夜夜一区二区| 久久久精品蜜桃| 91啦中文在线观看| 男男gaygay亚洲| 国产精品欧美久久久久无广告| 91成人网在线| 精品一区二区三区在线播放视频 | 中文字幕乱码久久午夜不卡| 不卡一区二区三区四区| 亚洲成人7777| 欧美变态口味重另类| 国产真实乱子伦精品视频| 国产精品欧美精品| 91精品国产福利在线观看| 成人一区在线看| 奇米综合一区二区三区精品视频| 国产偷国产偷亚洲高清人白洁| 日本韩国欧美在线| 国产精品99久久久久久久vr| 亚洲影院久久精品| 国产日韩欧美麻豆| 欧美一区二区视频免费观看| 不卡电影免费在线播放一区| 日韩成人精品在线观看| 亚洲特黄一级片| 日韩欧美高清在线| 欧美午夜一区二区三区免费大片| 国产乱人伦偷精品视频不卡| 偷窥国产亚洲免费视频| 国产精品私房写真福利视频| 日韩精品一区二区三区四区| 在线这里只有精品| 成人毛片在线观看| 韩国欧美国产1区| 日日夜夜一区二区| 亚洲电影在线免费观看| 国产精品国产a| 久久久亚洲精品石原莉奈| 91精品婷婷国产综合久久性色| 91丨porny丨蝌蚪视频| 国产成人在线视频网站| 美女视频黄a大片欧美| 香蕉久久一区二区不卡无毒影院| 中文字幕一区二区三区四区| 欧美激情一区二区三区四区| 亚洲精品在线观看网站| 欧美变态tickle挠乳网站| 欧美一区日本一区韩国一区| 欧美日韩在线免费视频| 在线观看区一区二| 色哟哟日韩精品| 色中色一区二区| 99精品视频一区| 91视频一区二区三区| 成人中文字幕在线| 成人国产精品免费观看动漫| 波多野洁衣一区| 不卡的电视剧免费网站有什么| 国产乱码一区二区三区| 国产在线观看一区二区| 国内精品自线一区二区三区视频| 美国毛片一区二区三区| 久久av老司机精品网站导航| 另类综合日韩欧美亚洲| 激情都市一区二区| 国产成人在线影院| 欧美大黄免费观看| 精品国产一区久久| 久久亚洲一区二区三区四区| 久久影院午夜片一区| 国产欧美日韩三级| 综合中文字幕亚洲| 亚洲一区二区三区四区五区黄| 亚洲香蕉伊在人在线观| 美女一区二区三区| 国产精品一区二区久久精品爱涩 | 自拍偷拍亚洲综合| 一区二区三区高清不卡| 天天做天天摸天天爽国产一区| 日本强好片久久久久久aaa| 久久精品99久久久| 不卡高清视频专区| 777色狠狠一区二区三区| 26uuu精品一区二区| 国产精品久久久久久久久免费樱桃| 综合激情网...| 蜜臀av在线播放一区二区三区| 国产综合色产在线精品| 99国产精品久久久久久久久久| 欧美精品久久99| 中文字幕欧美日本乱码一线二线| 一区二区三区在线视频观看| 日本va欧美va瓶| 成人的网站免费观看| 在线播放视频一区| 中文av一区特黄| 日本欧美大码aⅴ在线播放| 国产精品一区二区在线播放| 欧美影视一区二区三区| 精品国偷自产国产一区| 亚洲精品免费看| 精品亚洲国产成人av制服丝袜| 97久久超碰精品国产| 欧美videos大乳护士334| 亚洲精品水蜜桃| 国产激情视频一区二区在线观看 | 麻豆成人久久精品二区三区红 | 久久久久久免费网| 午夜视频一区在线观看| 丁香婷婷综合激情五月色| 777xxx欧美| 亚洲男人电影天堂| 国产一区中文字幕| 884aa四虎影成人精品一区| 亚洲色图欧洲色图婷婷| 蜜臀av性久久久久蜜臀aⅴ流畅| 国内精品国产三级国产a久久| 欧美视频精品在线观看| 国产精品国产自产拍在线| 麻豆精品国产传媒mv男同| 欧美性猛交一区二区三区精品| 国产人伦精品一区二区| 麻豆精品久久久| 欧美videos大乳护士334| 调教+趴+乳夹+国产+精品| 色菇凉天天综合网| 中文字幕一区二区三区视频 | 777午夜精品视频在线播放| 亚洲精品国产精华液| 国产.欧美.日韩| 日韩欧美不卡在线观看视频| 午夜天堂影视香蕉久久| 色一区在线观看| 综合久久综合久久| 久久精品国产精品亚洲红杏| 678五月天丁香亚洲综合网| 亚洲国产综合在线| 精品视频资源站| 亚洲午夜久久久久久久久电影院| 一本久道中文字幕精品亚洲嫩| 国产精品高潮久久久久无| 精品一二线国产| 久久综合999| 成人午夜在线播放| 亚洲国产高清不卡|