- 浏览: 390128 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
消失-IT超市:
方便加一下你的QQ吗,我的QQ是252375879,有个问题请 ...
js调用ocx控件(读写IC卡) -
mszb00123:
很有用
Extjs之--图片上传器 -
shouhouhuakai:
好崇拜,不错
URLConnection的连接、超时、关闭用法总结 -
wujierd:
写得好详细,学习了
URLConnection的连接、超时、关闭用法总结 -
paruke:
请问这个能加上图片旋转功能么 我试了一下 发现寻找中心点是个问 ...
Extjs之--图片浏览器
1、spring framework开发参考手册中第23掌"spring中的定时调度(Scheduling)和线程池(Thread Pooling)"提到三种方式:
(1)使用OpenSymphony Quartz 调度器
(2)使用JDK Timer支持类
(3)SpringTaskExecutor
抽象
2、实际业务需求说明
(1)同时向50台设备采集数据,并保存本地数据库。
(2)每30秒钟执行一次调度,完成对这50台设备数据的读取。
3、根据实际业务分析,属于多线程并发处理任务,于是采用SpringTaskExecutor
抽象方式完成
4、spring 容器配置
<!-- 接收数据 --> <!-- 异步线程池 --> <bean id="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!-- 核心线程数 --> <property name="corePoolSize" value="10" /> <!-- 最大线程数 --> <property name="maxPoolSize" value="100" /> <!-- 队列最大长度 >=mainExecutor.maxSize --> <property name="queueCapacity" value="1000" /> <!-- 线程池维护线程所允许的空闲时间 --> <property name="keepAliveSeconds" value="300" /> <!-- 线程池对拒绝任务(无线程可用)的处理策略 --> <property name="rejectedExecutionHandler"> <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" /> </property> </bean> <bean id="collectSalesOrderExecutor" class="com.fts.internal.CollectSalesOrderExecutor"> <property name="threadPool" ref="threadPool" /> <property name="dataSource" ref="dataSource" /> </bean> <bean id="springScheduleExecutorTask" class="org.springframework.scheduling.concurrent.ScheduledExecutorTask"> <property name="runnable" ref="collectSalesOrderExecutor" /> <!-- 容器加载10秒后开始执行 --> <property name="delay" value="10000" /> <!-- 每次任务间隔 30秒--> <property name="period" value="30000" /> </bean> <bean id="springScheduledExecutorFactoryBean" class="org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean"> <property name="scheduledExecutorTasks" > <list> <ref bean="springScheduleExecutorTask" /> </list> </property> </bean>
5、java调用
(1) collectSalesOrderExecutor.java
public class CollectSalesOrderExecutor extends TimerTask { //注入ThreadPoolTaskExecutor 到主线程中 private ThreadPoolTaskExecutor threadPool; private JdbcTemplate template; public void setThreadPool(ThreadPoolTaskExecutor threadPool) { this.threadPool = threadPool; } //注入数据源 public void setDataSource(DataSource dataSource) { this.template = new JdbcTemplate(dataSource); } @Override public void run() { System.out.format("开始执行 %s ...%n", new Date()); @SuppressWarnings("unchecked") //取得设备列表 List<Equipment> ipList = template.query("select e.* from equipment e ", ParameterizedBeanPropertyRowMapper.newInstance(Equipment.class)); if (ipList != null) { for (Equipment equipment : ipList) { try { //执行向各个设备采集数据并保存数据库 threadPool.execute(new CollectSalesOrderTask(template,equipment.getIp())); } catch (Exception ex) { ex.printStackTrace(); } } } } }
(2)CollectSalesOrderTask.java
public class CollectSalesOrderTask implements Runnable { private String ip; private JdbcTemplate template; public CollectSalesOrderTask(JdbcTemplate template, String ip) { this.template = template; this.ip = ip; } @Override public void run() { // 连接设备 System.out.format("执行采集数据 %s ...%n", ip); //接收设备数据 List<Report> list = JhscaleCommunicationUtils.getDeviceSales(this.ip); //保存本地数据库 if (list != null && !list.isEmpty()) storeSalesOrder(list); } }
6、遇到的一个问题处理,即PC机作为服务器使用,可能长时间不关机,隔天之后会报如下错误:
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
原因:Mysql服务器默认的“wait_timeout”是8小时【也就是默认的值默认是28800秒】,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection,通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。
解决:如下
D:\MySQL\MySQL Server 5.1\my.ini [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 ---------位置下面添加----------- # this is myown dinifition for mysql connection timeout wait_timeout=31536000 interactive_timeout=31536000
发表评论
-
不负时光,继续学习
2017-04-11 17:04 6464月,一年当中最好的时节,和风煦日春意浓; ... -
生活依旧,做好自己
2017-02-04 16:51 427新年开工第二天,工作之余翻看了电脑上以前的文 ... -
2016年最后一天随笔
2016-12-30 14:48 5942016年马上就要过去了,回顾过去的一年感 ... -
excel中汉字转拼音全拼和简拼
2016-09-12 11:45 1623一、汉字转全拼 1.启动Excel 2003(其它版本请仿 ... -
年底总结3-工作中遇到的错误及解决方式
2015-02-16 11:28 1039在过去的一年工作中遇到的一些问题及解决方式,如下: -- ... -
数据库方面遇到的问题总结
2013-05-23 20:29 10121、mysql服务自动关闭处理方式 我的电脑 -> ... -
resin2.1.17报错:META-INF/c.tld:6 unknown element `xsi:schemaLocation' in `taglib'
2012-08-20 18:37 30741、问题描述 resin启动后,访问jsp页面 ... -
Extjs grid 合计
2012-05-31 14:28 19121、直接在客户端统计,动态的修改Grid 2、代码如下 ... -
mysql函数使用-字符串处理
2012-05-29 17:15 11831、按地区统计数据 select q.psn,t.na ... -
spring JdbcTemplate 批量插入
2012-05-27 09:13 20451、通过批量操作减少与数据库连接所消耗的资源。 2、J ... -
JDBC连接Sql server
2012-03-07 10:24 17071、采用微软提供的ms sql server jdbc dri ... -
java下将汉字转换为拼音
2012-01-15 18:06 12081、代码如下,不过有些汉字不支持,如:茜 import ... -
年底总结1-tomcat6使用中遇到的问题
2012-01-01 10:23 65741、tomcat6.0.18注册windows服务成功后,但是 ... -
VML应用-利用ECOTree绘制树形结构图
2011-10-29 17:57 63991、基本概念 VML的全称是Vector Markup La ... -
java串口编程-读取称重仪表中净重
2011-10-12 17:08 5189一、需求说明 ... -
记录oracle 关联更新的例子
2011-10-03 20:55 11551、说明 修改某一天“本期值”数据时,需要把第二天的“上期值 ... -
Spring + JdbcTemplate + JdbcDaoSupport examples
2011-06-29 14:14 5542(转载)http://www.mkyong.com/sprin ... -
js--设为首页、加入收藏
2011-03-19 00:13 977<a onclick="this.style. ... -
org.hibernate.ObjectNotFoundException: No row with the given identifier exists
2011-03-08 00:19 20881、问题说明 hibenate中实体关联映射中<man ... -
VirtualBox网络配置-搭建数据库服务器
2011-02-10 23:50 31591、由于操作系统与数据库之间兼容性的问题,于是采用在虚拟机上安 ...
相关推荐
在IT行业中,Spring框架是Java开发中的一个核心组件,它提供了丰富的功能,包括但不限于依赖注入、AOP(面向切面编程)以及我们今天要讨论的重点——任务调度。Spring的任务调度模块使得开发者能够在应用中轻松地...
最新struts2-spring-plugin-2.3.24.1.jar
struts2-spring-plugin-2.2.1.jarstruts2-spring-plugin-2.2.1.jarstruts2-spring-plugin-2.2.1.jar
- 在多线程环境下,使用SqlSessionTemplate可以确保线程安全。 总的来说,MyBatis-Spring整合简化了在Spring应用中使用MyBatis的过程,提高了开发效率,并且提供了良好的事务管理和依赖注入功能。通过正确配置和...
Spring中的任务调度是实现应用程序自动化运行任务的重要工具,而Quartz是Java领域广泛使用的开源任务调度框架。在本文中,我们将深入探讨如何在Spring中集成Quartz进行任务调度,并通过一个简单的示例来理解其工作...
总结来说,"maven管理的Spring多线程任务demo"是一个结合了Maven项目管理、Spring框架和多线程编程的示例。通过学习这个示例,开发者可以更好地理解如何在Spring中配置和使用线程池,从而高效地处理并发任务,提高...
Spring框架提供了强大的任务调度能力,使得开发者能够轻松地在Java环境中实现这一功能。本篇将深入探讨如何利用Spring进行任务调度,并结合代码演示和Quartz库的使用来丰富这一主题。 首先,Spring提供了两种主要的...
本文将基于提供的mybatis-spring-1.2.3-source.zip源码,深入探讨MyBatis-Spring的整合机制和核心功能。 1. **MyBatis-Spring的整合背景** MyBatis是一个轻量级的ORM(对象关系映射)框架,它解决了SQL与Java代码...
struts2-spring-plugin-2.1.8.1.jar
Spring框架提供了强大的任务调度能力,使得开发者能够轻松地集成和管理定时任务。本资料“Spring实现任务调度”将深入探讨如何在Spring中设置和管理定时任务。 首先,我们需要理解Spring中的任务调度机制。Spring...
在Spring框架中,任务调度是一项重要的功能,它允许开发者安排任务在特定的时间点或周期性地执行。这个“spring 任务调度实现代码例子”很可能是包含了一些示例代码,用于演示如何在Spring应用中配置和使用任务调度...
8、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞; 9、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务; 10、邮件报警:任务失败时支持邮件报警,支持配置多...
struts2-spring-plugin 最新jar包(2012.10.22) 0分资源,方便你我
总结来说,"soft-spring demo"是一个展示了如何在Spring应用中集成和使用Quartz Scheduler的实例,它涉及到Spring的DI和AOP特性,以及Quartz的作业调度功能。通过这个项目,开发者可以学习如何创建、管理和执行定时...
在给定的压缩包中,包含两个核心的 JAR 文件:mybatis-3.2.6.jar 和 mybatis-spring-1.2.2.jar。这两个 JAR 文件是 MyBatis 和 MyBatis-Spring 框架的核心组件,用于整合 Spring 框架和 MyBatis,实现更高效且灵活的...
- 多线程编程 2. 数据库: - 熟悉SQL语言 - 了解关系型数据库和非关系型数据库 - 数据库连接池 - 数据库事务 3. Spring框架: - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring...
总结,Spring 3.0 MVC中的定时器和多线程任务是提升应用程序效率的重要工具。定时器可以帮助我们定期执行特定任务,而多线程则可以提高程序并发能力,减少等待时间。通过合理利用这两个特性,我们可以构建出更健壮、...
在【标题】"Spring的多线程应用"中,我们关注的是Spring如何支持和管理多线程,这是现代并发编程的一个关键特性。在【描述】中提到的"一个简单的spring的多线程demo",我们可以理解为一个示例项目,旨在帮助开发者...
本源码提供了一个基于Spring Boot的微任务分布式调度框架的设计。项目包含61个文件,其中包括22个Java文件、21个XML文件、8个YML文件、3个Markdown文档、1个gitignore文件、1个Properties文件、1个LICENSE文件、1个...
- 多线程编程 2. 数据库: - 熟悉SQL语言 - 了解关系型数据库和非关系型数据库 - 数据库连接池 - 数据库事务 3. Spring框架: - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring...