- 浏览: 551852 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- 随笔 (4)
- Spring (13)
- Java (61)
- HTTP (3)
- Windows (1)
- CI(Continuous Integration) (3)
- Dozer (1)
- Apache (11)
- DB (7)
- Architecture (41)
- Design Patterns (11)
- Test (5)
- Agile (1)
- ORM (3)
- PMP (2)
- ESB (2)
- Maven (5)
- IDE (1)
- Camel (1)
- Webservice (3)
- MySQL (6)
- CentOS (14)
- Linux (19)
- BI (3)
- RPC (2)
- Cluster (9)
- NoSQL (7)
- Oracle (25)
- Loadbalance (7)
- Web (5)
- tomcat (1)
- freemarker (1)
- 制造 (0)
最新评论
-
panamera:
如果设置了连接需要密码,Dynamic Broker-Clus ...
ActiveMQ 集群配置 -
panamera:
请问你的最后一种模式Broker-C节点是不是应该也要修改持久 ...
ActiveMQ 集群配置 -
maosheng:
longshao_feng 写道楼主使用 文件共享 模式的ma ...
ActiveMQ 集群配置 -
longshao_feng:
楼主使用 文件共享 模式的master-slave,produ ...
ActiveMQ 集群配置 -
tanglanwen:
感触很深,必定谨记!
少走弯路的十条忠告
Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面是在Spring中配置Quartz:
<!-- ***************属性配置文件读入 ,多个用逗号隔开*************** -->
<context:property-placeholder location="classpath:conf/ibatis/jdbc.properties , classpath:config.properties" />
<!-- ************************数据源连接配置********************* -->
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${driver}</value>
</property>
<property name="url">
<value>${url}</value>
</property>
<property name="username">
<value>${username}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
</bean>
<!-- ************************定时任务配置********************* -->
<!-- 要调用的工作类 -->
<bean id="quartzJob" class="com.maosheng.util.schedule.ProductSynJob">
<property name="host" value="${ftp_host}" />
<property name="port" value="${ftp_port}" />
<property name="username" value="${ftp_username}" />
<property name="password" value="${ftp_password}" />
<property name="remotePath" value="${ftp_remotePath}" />
<property name="localPath" value="${ftp_localPath}" />
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="quartzJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobtask"/>
</property>
<!-- cron表达式 每天上午14:30触发-->
<property name="cronExpression">
<value>0 30 14 ? * *</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="doTime"/>
</list>
</property>
</bean>
<!--********************************************************************-->
<!--***************************config.properties*******************-->
#FTP config parameter
ftp_host=110.18.14.250
ftp_port=21
ftp_username=test
ftp_password=test
ftp_remotePath=D:\download
ftp_localPath=D:\oracle\myfile
<!--**************************jdbc.properties******************** -->
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@110.18.14.250:1521:orcl
username=test
password=testpwd
package com.maosheng.util.schedule;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author maosheng
*
*/
public class ProductSynJob{
final static Logger logger = LoggerFactory
.getLogger(ProductSynJob.class);
//FTP服务器hostname
private String host;
//FTP服务器端口
private int port;
//FTP登录账号
private String username;
//FTP登录密码
private String password;
//FTP服务器上的相对路径
private String remotePath;
//下载后保存到本地的路径
private String localPath;
private DataSource dataSource;
/**
*
* 创建人 :maosheng
* 创建时间:2013-5-7
* 功能描述:同步处理程序
*/
public void execute() {
//下载同步理财产品文件
List<String> files_path = FTPUtil.downFile(host, port, username,
password, remotePath, localPath);
if (files_path != null && files_path.size() == 1) {
String file_name=files_path.get(0);
logger.info("下载同步产品文件"+file_name);
//解析同步产品文件并入库
Connection connection = null;
CallableStatement callableStatement = null;
int result=0;
try {
connection = dataSource.getConnection();
callableStatement=connection.prepareCall("{ call PR_FINANCE_PRODUCT_PARSE(?,?) }");
callableStatement.setString(1,file_name);
callableStatement.registerOutParameter(2, OracleTypes.INTEGER);
callableStatement.execute();
result = callableStatement.getInt(2);
if(result==1){
logger.info("解析同步产品文件,成功完成");
}else
{
logger.info("解析同步产品文件,完成失败");
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(callableStatement!=null){
callableStatement.close();
}
if(connection!=null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRemotePath() {
return remotePath;
}
public void setRemotePath(String remotePath) {
this.remotePath = remotePath;
}
public String getLocalPath() {
return localPath;
}
public void setLocalPath(String localPath) {
this.localPath = localPath;
}
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
}
<!-- ***************属性配置文件读入 ,多个用逗号隔开*************** -->
<context:property-placeholder location="classpath:conf/ibatis/jdbc.properties , classpath:config.properties" />
<!-- ************************数据源连接配置********************* -->
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${driver}</value>
</property>
<property name="url">
<value>${url}</value>
</property>
<property name="username">
<value>${username}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
</bean>
<!-- ************************定时任务配置********************* -->
<!-- 要调用的工作类 -->
<bean id="quartzJob" class="com.maosheng.util.schedule.ProductSynJob">
<property name="host" value="${ftp_host}" />
<property name="port" value="${ftp_port}" />
<property name="username" value="${ftp_username}" />
<property name="password" value="${ftp_password}" />
<property name="remotePath" value="${ftp_remotePath}" />
<property name="localPath" value="${ftp_localPath}" />
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="quartzJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobtask"/>
</property>
<!-- cron表达式 每天上午14:30触发-->
<property name="cronExpression">
<value>0 30 14 ? * *</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="doTime"/>
</list>
</property>
</bean>
<!--********************************************************************-->
<!--***************************config.properties*******************-->
#FTP config parameter
ftp_host=110.18.14.250
ftp_port=21
ftp_username=test
ftp_password=test
ftp_remotePath=D:\download
ftp_localPath=D:\oracle\myfile
<!--**************************jdbc.properties******************** -->
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@110.18.14.250:1521:orcl
username=test
password=testpwd
package com.maosheng.util.schedule;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author maosheng
*
*/
public class ProductSynJob{
final static Logger logger = LoggerFactory
.getLogger(ProductSynJob.class);
//FTP服务器hostname
private String host;
//FTP服务器端口
private int port;
//FTP登录账号
private String username;
//FTP登录密码
private String password;
//FTP服务器上的相对路径
private String remotePath;
//下载后保存到本地的路径
private String localPath;
private DataSource dataSource;
/**
*
* 创建人 :maosheng
* 创建时间:2013-5-7
* 功能描述:同步处理程序
*/
public void execute() {
//下载同步理财产品文件
List<String> files_path = FTPUtil.downFile(host, port, username,
password, remotePath, localPath);
if (files_path != null && files_path.size() == 1) {
String file_name=files_path.get(0);
logger.info("下载同步产品文件"+file_name);
//解析同步产品文件并入库
Connection connection = null;
CallableStatement callableStatement = null;
int result=0;
try {
connection = dataSource.getConnection();
callableStatement=connection.prepareCall("{ call PR_FINANCE_PRODUCT_PARSE(?,?) }");
callableStatement.setString(1,file_name);
callableStatement.registerOutParameter(2, OracleTypes.INTEGER);
callableStatement.execute();
result = callableStatement.getInt(2);
if(result==1){
logger.info("解析同步产品文件,成功完成");
}else
{
logger.info("解析同步产品文件,完成失败");
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(callableStatement!=null){
callableStatement.close();
}
if(connection!=null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRemotePath() {
return remotePath;
}
public void setRemotePath(String remotePath) {
this.remotePath = remotePath;
}
public String getLocalPath() {
return localPath;
}
public void setLocalPath(String localPath) {
this.localPath = localPath;
}
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
}
发表评论
-
java 类的加载 以及 ClassLoader
2020-04-16 09:43 346Class Loader 类加载器: 类加载器负责加载 ... -
Stack 的实现原理深入剖析
2020-04-06 13:26 437Stack 介绍: Stack是栈。 ... -
Vector 的实现原理深入剖析
2020-04-06 13:17 328Vector介绍: Vector 是矢量队列,它是JDK1. ... -
JDK 分析工具
2020-04-05 17:30 300常用分析工具: jps:显示指定系统中所有的HotSpot虚 ... -
二叉树的深度优先遍历和广度优先遍历
2020-03-10 09:33 513概述: 1、深度优先遍历(Depth-First-Sear ... -
Hashtable 的实现原理深入剖析
2020-02-18 20:59 433一、Hashtable的基本方法: 1、定义: HashT ... -
jdk 1.8 新特性
2020-02-17 13:43 2911、default关键字 ... -
Java IO 架构
2019-11-11 16:39 316主要两类: 磁盘I/O 网络I/O 基于字节 ... -
Java 数据结构与算法
2019-04-03 10:25 457程序=数据结构+算法 ... -
Java语言异常(Exception)
2018-10-09 11:40 505异常,是Java中非常常用 ... -
Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
2018-08-17 09:47 1433首先介绍一些乐观锁与 ... -
Java 高性能编程注意事项
2016-11-17 09:55 6141. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担, ... -
Netty 解析
2017-03-07 13:47 1179Linux网络IO模型: Linux ... -
2016年Java 面试题总结
2016-01-18 13:34 54727多线程、并发及线程的基础问题: 1)Java 中能创建 vo ... -
java 内存模型
2015-12-29 13:44 782JAVA内存模型: Java内存 ... -
JVM 深入剖析
2015-12-29 12:51 1034JVM是JAVA虚拟机(JAVA Virtual Machin ... -
Java 并发编程_Synchronized
2015-12-16 12:42 831硬件的效率和一致性: 由于计算机的运算速度和它的存储和通讯子 ... -
Java 并发编程_Volatile
2015-12-15 13:42 589术语定义: 共享变量:在多个线程之间能够被共享的变量被称为共 ... -
Java 并发编程_ConcurrentLinkedQueue
2015-12-15 13:32 872ConcurrentLinkedQueue 的分析和使用: ... -
Java 并发编程_ConcurrentHashMap
2015-11-10 11:30 799ConcurrentHashMap 的分析和 ...
相关推荐
spring3 配置quartz定时任务的使用。一个小例子。可直接运行Test.java。就可以启动定时任务。每10秒钟执行一次,可以根据自己配置。
spring3 配置quartz定时任务的使用。一个小例子。可直接运行Test.java。就可以启动定时任务。
Spring Boot 配置 Quartz 定时任务(csdn)————程序
在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...
分享项目中使用到的spring中quartz定时任务文件,其中有quartz.xml demo实例,非常清楚每个步骤和流程,也有配置文件 quartz.properties 详细说明,如有不足之处,请多指教,谢谢!
定时任务demo,Java语言,spring整合quartz配置文件实现定时任务
java中spring quartz定时任务demo,里面包含项目所需的quartz.jar, spring.jar包,配置文件等,可直接运行使用
spring-cloud-alibaba+dubbo+nacos+quartz以yml配置方式实现
Springboot整合Quartz实现定时任务数据库动态配置,新增任务、修改cron表达式、暂停任务、恢复任务、删除任务等操作
spring注解Quartz定时执行功能
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
spring多个定时任务quartz配置
关于spring中quartz的配置
传统Spring+Quartz实现的定时器一般都是通过配置文件中配置的,这就意味着如果我们修改了定时任务的时间,就得重新启动一下Tomcat,而且每次新建一个任务就得在spring中添加相关的配置信息,非常麻烦。基于上面的...
spring 在配置quartz定时任务时所需要的jar包,里面含有两个包quartz-all-1.8.3和commons-logging-1.0.4
NULL 博文链接:https://duanfei.iteye.com/blog/1732839
Spring+Quartz实现定时任务的配置方法.rar
NULL 博文链接:https://medbricom.iteye.com/blog/1782765
Quartz + spring简单配置多个任务调度 spring配置文件 简单配置
Quartz学习文档 Spring + Quartz配置详细实例 jar包 Quartz时间格式设置