`

web启动,quartz 关联的servlet 启动,得到Spring的bean ,servletContext 获取数据源

阅读更多
package com.cal.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import com.cal.utils.DBOperation;

public class QuartzJobServlet extends HttpServlet {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 199173078896194253L;

//	private ServletContext sc;
	/**
	 * Constructor of the object.
	 */
	public QuartzJobServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init(ServletConfig config) throws ServletException {
		ServletContext sc = config.getServletContext();
		SchedulerFactory sf = new StdSchedulerFactory();
		Scheduler sched;
		try {
			DBOperation o = new DBOperation();
			o.excuteUpdate("select * from userinfo ", null, sc);
			sched = sf.getScheduler();
			sched.start();
		} catch (SchedulerException e) {
			e.printStackTrace();
		} 
	}

}


DBOperation :
package com.cal.utils;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletContext;
import org.apache.log4j.Logger;

public class DBOperation {
	private PreparedStatement stsm;
	private static Logger log = Logger.getLogger(DBOperation.class);
	public void excuteUpdate(String sql,Object[]values,ServletContext sc){
		try {
			stsm = DBConnection.getConnection(sc).prepareStatement(sql);
			if(values!=null && values.length>0)
			{
				for(int i=0 ; i<values.length ;i++)
				{
					stsm.setObject(i+1, values[i]);
				}
			}
			stsm.executeUpdate();
		} catch (SQLException e) {
			log.error("数据更新错误!",e);
		} finally {
			DBConnection.closeConnection();
		}

	}
}


DBConnection:
package com.cal.utils;
import java.sql.Connection;
import java.sql.SQLException;

import javax.servlet.ServletContext;


import org.apache.log4j.Logger;
import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class DBConnection {
	private static Connection conn;
	private static Logger log = Logger.getLogger(DBConnection.class);

	/**
	 * 获得数据库连接
	 * 
	 * @return
	 */
	public static synchronized Connection getConnection(ServletContext sc) {
		init(sc);
		return conn;
	}

	/**
	 * 初始化数据库连接
	 */
	private static void init(ServletContext sc) {
		try {
			//PropUtils p = new PropUtils();
			//p.loadFile("jdbc.properties");
			ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sc);
			//new FileSystemXmlApplicationContext();
			ProxoolDataSource prox = (ProxoolDataSource)ctx.getBean("dataSource");
			
			// 获取连接
			conn =prox.getConnection();
			// Class.forName(p.getValue("db.driver"));
			// conn =
			// DriverManager.getConnection(p.getValue("db.url"),p.getValue("db.user"),p.getValue("db.password"));
		} catch (SQLException e) {
			log.error("数据库连接错误!", e);
		}catch(Exception e){
			log.error("数据库连接错误!", e);
		}
	}

	/**
	 * 关闭数据库连接
	 */
	public static void closeConnection() {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				log.error("数据库关闭错误!", e);
			}
		}
	}
//	public static void main(String[] args) {
//		init();
//	}
}
分享到:
评论

相关推荐

    spring2与quartz在Web整合

    3. **整合过程**:整合 Spring 2 和 Quartz 需要在 Spring 配置文件中声明 Job 和 Trigger 的 Bean,并指定它们的关联。Spring 可以通过其自身的 JobFactory 来创建 Job 实例,使得 Job 可以利用 Spring 的 DI 功能...

    Quartz注入Spring的Bean

    2. **Spring管理Job的生命周期**:将Job类定义为Spring的Bean,这样Job实例的创建、初始化、销毁等生命周期管理就交给了Spring,而不是Quartz。这样做的好处是,Job可以轻松地利用Spring的其他服务,如数据库连接池...

    spring和quartz的定时器的启动和停止例子

    -- 配置数据源,Quartz需要数据库来存储job和trigger信息 --&gt; &lt;!-- 是否自动启动 --&gt; &lt;!-- 当Spring容器关闭时,是否等待所有正在运行的任务完成 --&gt; &lt;/bean&gt; ``` 3. **创建Job和Trigger**:定义一个实现...

    Quartz(二)整合Spring容器中bean及动态调度任务

    在"Quartz(二)整合Spring容器中bean及动态调度任务"这个主题中,我们将探讨如何在Spring容器中配置和使用Quartz,以及如何动态地调度任务。首先,我们需要在Spring的配置文件中声明Quartz的相关bean,如`...

    Mybatis+Spring+SpringMVC+quartz多数据源切换

    "Mybatis+Spring+SpringMVC+quartz多数据源切换"的架构设计就是为了满足这样的场景。这个项目结合了四个关键的技术组件,它们分别是Mybatis、Spring、SpringMVC和Quartz,下面将详细介绍这些技术以及它们在多数据源...

    quartz servletcontext配置资料

    在Servlet环境下,特别是在使用Spring MVC等框架时,Quartz与ServletContext的结合配置显得尤为重要,因为这能让我们更好地管理和监控后台定时任务。 ### Quartz简介 Quartz 提供了一个完全线程化的事件调度器,...

    quartz 随tomcat启动执行一次

    ### 关于 Quartz 随 Tomcat 启动执行一次的知识点 #### 1. Quartz 概述 Quartz 是一个开源的作业调度框架,能够触发在指定时间执行的任务(也称为作业)。它提供了丰富的调度器功能,如支持复杂的循环调度、支持...

    spring+quartz demo

    Spring 和 Quartz 结合,可以使用 Quartz 提供的 Web 监控界面(如 `org.quartz.plugins.management.JobRunShellServlet`)或者通过 API 进行任务监控和管理。 8. **异常处理**: 在 Job 执行过程中如果出现异常...

    spring注解Quartz定时执行功能

    利用Spring的`@Component`注解将该类注册为bean,再使用Quartz的`@DisallowConcurrentExecution`(防止并发执行)和`@PersistJobDataAfterExecution`(持久化任务数据)注解,以及Spring的`@Scheduled`注解来定义...

    quartz整合springbatch动态集群定时实现mysql参考

    Quartz和Spring Batch是两种非常重要的Java开源框架,它们在企业级应用开发中扮演着重要角色。Quartz主要用于任务调度,而Spring Batch则专注于批量处理。在这个“quartz_springbatch_dynamic”项目中,我们将看到...

    Quartz与Spring整合练习源代码

    首先,在Spring的配置文件中,我们需要定义一个`SchedulerFactoryBean`,设置相关的Quartz属性,如数据源、JobStore类型等。这样,Spring会自动创建并启动Scheduler。然后,定义`MethodInvokingJobDetailFactoryBean...

    SpringQuartz的使用文档

    SpringQuartz是一个强大的任务调度框架,它在Java应用程序中用于自动化执行特定任务,如定时生成文件、统计数据或执行后台清理工作。Quartz是开源的,具有高度灵活的调度功能,能够根据预定义的时间表触发任务,同时...

    Spring_QuartZDemo

    【Spring_QuartZDemo】是一个使用Spring框架集成Quartz定时任务的示例项目,它展示了如何在Java应用中利用Spring和Quartz实现任务调度。Quartz是Java领域一款功能强大的开源作业调度库,能够帮助开发者创建、调度和...

    Java_Spring与Quartz的整合

    - 在Spring配置中,使用`&lt;bean&gt;`标签定义Trigger,并关联Job。 4. **启动Scheduler** - 在Spring应用启动时,通过`SchedulerFactoryBean`的`start()`方法启动Scheduler,开始监控并执行Job。 5. **动态管理Job**...

    spring quartz 时间调用框架

    1. **JobDetail**: Spring中的`JobDetailBean`用于定义一个Job,它可以绑定到Spring的bean,使得Job可以利用Spring的依赖注入来获取服务。 2. **Trigger**: 使用`CronTriggerBean`或`SimpleTriggerBean`来定义触发...

    spring java 定时器 执行两次 quartz

    在Spring框架中,定时任务是常见的需求,例如用于执行定期数据同步、日志清理或发送邮件等。Quartz是一款强大的开源任务调度库,它能够与Java应用程序无缝集成,实现复杂的时间触发任务。当我们遇到Spring定时器执行...

    关于spring中quartz的配置

    在Spring框架中集成Quartz是一款常见的任务调度解决方案,它允许开发者在应用中安排定时任务的执行。Quartz是一个开源的作业调度框架,可以用来在Java应用程序中安排复杂的作业任务。以下将详细介绍如何在Spring中...

    quartz和spring-quartz

    Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...

    spring3配置quartz定时任务

    在Java开发中,Spring框架是不可或缺的一部分,而Quartz则是一个强大的作业调度库,用于创建、调度和执行作业。本文将详细介绍如何在Spring 3中配置Quartz来实现定时任务。 首先,理解定时任务的基本概念。定时任务...

    spring mvc quartz 动态设置时间

    - 使用Quartz时,确保正确配置了数据源,因为Quartz通常需要一个数据库来存储作业和触发器的信息。 总之,Spring MVC与Quartz的结合提供了强大且灵活的任务调度能力,通过动态设置时间,你可以根据业务需求轻松地...

Global site tag (gtag.js) - Google Analytics