最近做了一个项目框架是Spring+Hibernate+Webwork,数据库是MySQL。用到了Quartz。这个job继承QuartzJobBean,直接使用DAO层。
项目每10分钟运行一次,中间有个for循环,循环内部有个DAO的save操作。
结果发现有个很严重的问题,job正常运行一段时间后,save操作多次后,某个循环中,程序运到save操作就不动了(比如i=899的时候),像假死一样。 似乎数据库连接出问题了,因为mysql查询show processlist的时候发现了3个本程序调用的process都是处于休眠状态。
请求指点,谢谢。
JOB中的部分的代码
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
for (int i = 0; i < 10000; i++) {
ItsRule rule = new ItsRule(i);
其他非数据库操作,估计耗时2秒。。。
abcDAO.save(rule);
}
}
DAO中的代码
public class AbcDAO extends HibernateDaoSupport {
public void save(Object object) {
getHibernateTemplate().save(object);
}
}
上面代码测试的过程中,在
上段代码第3行处假死的(用LOG做过验证的),但是假死之前session is Open和session is Connected。
请大家赐教,谢谢了。
分享到:
相关推荐
在spring+hibernate的框架中定时操作数据库,主要是拿到sessionFactory,不会出现no session 和transaction no-bound等问题,由sessionFactory完成对数据的操作,有些包是没有用的,有兴趣的可以自己删除掉
接着,定义一个`JobRepository`接口,继承自JpaRepository,用于操作数据库中的JobDetail和Trigger。 ```java public interface JobRepository extends JpaRepository, Long>, JpaRepository, Long> { // custom ...
在 Quartz 与 Hibernate 整合时,可以利用 Hibernate 的功能来持久化 Quartz 的作业和触发器,提供了一种无缝的方式来管理数据库中的调度数据。 Spring 是一个全面的 Java 应用开发框架,提供依赖注入、事务管理、...
项目用eclipse 导入 不同的数据库 请在数据库运行不同的SQL 脚本 用hibernate 时注意 是什么数据库 hibernate.properties 文件第一二行自行更改数据库类型 如果不能正常运行、欢迎联系我、一起讨论 。
quartz1.6.5 整合 Hibernate、Spring,本例支持同时运行多个不同的任务,每个任务动态调用的方法和时间都不一样; 附件中有支持各种数据库的脚本;本例支持Oracle10g数据库脚本;开发测试使用的IDE工具MyEclipse6.5;...
在提供的压缩包"spring4+hibernate5+quartz2+hdfs.rar"中,可能包含了配置文件、Java源代码、数据库连接设置等,用户只需提供自己的JDBC连接信息,即可快速部署和运行这个整合系统。通过解压并研究这些文件,开发者...
例如,我们可能需要定期检查数据库中的某些数据并执行相应的操作,或者定时从外部接口获取数据并存储到数据库中。这种结合可以帮助我们构建出一个自动化的后台任务系统,无需人工干预即可处理数据。 要实现这样的...
- **JDBC操作**:使用JDBC API或者ORM框架(如Hibernate、MyBatis)来连接数据库,执行备份脚本。通常包括创建备份文件、导出数据到文件等步骤。 - **备份策略**:可以考虑全量备份和增量备份。全量备份是每次备份...
Quartz 是一个开源的作业调度框架,用于在 Java 应用程序中实现复杂的工作调度。它的设计目标是成为一个完全可插拔的作业调度系统,能够嵌入到任何使用 Java 的应用中,提供灵活且可靠的定时任务执行服务。Quartz 的...
Quartz的主要特点是高可用性、可扩展性、灵活配置、支持多种数据库和集群环境。 Quartz 集群调度使用说明 Quartz 集群调度是指将多个Quartz节点组成一个集群,以便提高系统的可用性和可扩展性。在集群环境中,每个...
4. **JPA和Hibernate集成**:对于使用JPA或Hibernate的应用,Quartz还提供了集成方案,可以直接利用这些ORM框架进行持久化操作,简化了数据库操作的复杂性。 5. **分布式存储**:在集群环境中,Quartz支持多节点间...
在这个项目中,Hibernate可能被用来存储和检索quartz的作业和触发器信息,包括时间规则,这样就可以在数据库中动态更新任务配置,而无需修改代码。 4. **Quartz库**:Quartz是Java中广泛使用的任务调度库,它可以...
quartz1.6.5 整合 Hibernate、Spring,本例支持同时运行多个不同的任务,每个任务动态调用的方法和时间都不一样; 附件中有支持各种数据库的脚本;本例支持Oracle10g数据库脚本;开发测试使用的IDE工具MyEclipse6.5;...
将SpringMVC、Hibernate和定时器整合,通常是在SpringMVC中配置一个定时任务,该任务利用Hibernate进行数据库操作。首先,你需要在SpringMVC的配置文件中添加定时任务的配置,比如使用Spring的TaskExecutor或...
这两份配置文件的目的是让 Quartz 将作业和触发器的信息保存在数据库中,便于管理和维护。 在 `applicationContext.xml` 中,除了数据源配置,还需要引入 Quartz 的上下文配置。这通常涉及创建一个 `...
在压缩包文件"oa_ssh"中,可能包含了项目的所有源代码、配置文件、数据库脚本等资源,开发者可以通过这些文件了解和学习SSH框架与Quartz集群的整合实现,以及RABC权限管理的具体细节。通过研究和实践,可以深入理解...
Quartz的持久化操作需要数据库支持,压缩包中的"需要的表"包含了Quartz运行所需的数据库表脚本。这些表用于存储Job、Trigger和其他调度信息,如qrtz_jobs表存储Job信息,qrtz_triggers表存储Trigger信息等。 五、...
在 Quartz 任务调度器中,我们可以从数据库中读取相应的时间规则表达式,并根据该表达式来触发相应的任务。 5. 更新您的任务触发器的时间设置 在 Quartz 任务调度器中,我们需要更新任务触发器的时间设置,以便于...
Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。它的持久化功能是其重要特性之一,使得在系统重启后能够恢复先前的状态,继续执行预定的任务,保证了服务的连续性和可靠性。 ...
Hibernate通过XML或注解方式将Java对象映射到数据库表,简化了数据库操作。在SSH2中,Hibernate负责数据的持久化,与Spring配合可以实现透明的数据访问。 Quartz库则专注于任务调度,它允许开发者定义Job(作业)和...