最近研究Roller的任务调度设计,自己也照猫和老虎写了个任务实现类,总发现我的任务总有问题:
如果设置为30分钟跑一次,总是不按照规则来。
跟踪了代码发现Roller登记租期的时候没有提交事务,导致释放租期的时候异常了,所以相关的锁信息没有更新,总是在初始化状态。
后来加的事务提交的代码发现锁信息被更新了。于是对比了一下Roller5的代码,发现Roller5是有提交事务的(下面是Roller5的代码strategy.flush();
):
Query q = strategy.getNamedUpdate(
"TaskLock.updateClient&Timeacquired&Timeleased&LastRunByName&Timeacquired");
q.setParameter(1, task.getClientId());
q.setParameter(2, Integer.valueOf(task.getLeaseTime()));
q.setParameter(3, new Timestamp(runTime.getTime()));
q.setParameter(4, task.getName());
q.setParameter(5, taskLock.getTimeAquired());
q.setParameter(6, new Timestamp(leaseExpiration.getTime()));
int result = q.executeUpdate();
if(result == 1) {
strategy.flush();
return true;
}
Query q = strategy.getNamedUpdate(
"TaskLock.updateTimeLeasedByName&Client");
q.setParameter(1, Integer.valueOf(0));
q.setParameter(2, task.getName());
q.setParameter(3, task.getClientId());
int result = q.executeUpdate();
if(result == 1) {
strategy.flush();
return true;
}
可能还有很多问题没有发现,以后再说!
其实想来这个是一个比较低级的错误,为什么作为apache的开源项目,这样的错误好像说不过去哦。难道这些项目的详细设计和编码是不同的人吗?或许跟开发者用的数据库有关吧?
分享到:
相关推荐
在3DMAX中,卷曲修改器是实现复杂动态效果的重要工具,而Roller正是这样一款专为卷曲效果设计的插件。这款插件能够帮助用户轻松创建出卷曲形状的模型,不仅限于静态的造型,还能生成逼真的卷曲和展开的动画效果。 ...
标题中的"roller"很可能指的是Apache Roller,一个开源的博客服务器平台。这个平台允许用户创建、管理和发布多个博客,并且提供了丰富的API供开发者扩展其功能。接下来,我们将深入探讨与"roller"相关的技术知识点。...
- **日志查看器**:如LogCat或Log4j,帮助定位和解决问题。 - **性能监控工具**:JProfiler或VisualVM,可以监控应用性能,找出潜在瓶颈。 总的来说,安装和使用roller不仅涉及到基本的Web应用部署,还涵盖了Java...
通过阅读源码,可以学习到MVC(模型-视图-控制器)设计模式的实现,以及Spring框架、Hibernate持久层框架在实际项目中的应用。 3. **部署到Tomcat**:Tomcat是一款流行的Java应用服务器,它轻量级且高效。将Roller...
它的设计目标是使Web开发过程更加优雅和愉快,提供了丰富的特性和工具,如路由、中间件、数据库迁移、Eloquent ORM、任务调度等,极大地提高了开发效率。 二、角色与权限 在"Laravel开发-roller"中,角色和权限管理...
Roller 是一个全功能的多用户博客平台,于2002年首发,采用Java语言开发,设计精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS ...
在"roller-weblogger-5.0.0-tomcat"这个压缩包中,包含了Roller 5的全部资源,专为Tomcat优化设计。解压后,你可以找到Web应用程序的标准目录结构,如WEB-INF、META-INF、WEB-INF/classes以及WEB-INF/lib下的jar文件...
Apache Roller是一个全功能,多用户和组博客服务器,适合大型和小型博客网站。它运行一个Java Web应用程序应该能够运行在任何Java EE服务器和关系数据库。目前,Apache Roller能很好的支持Tomcat和MySQL。 本人用...
Apache Roller是著名的开源博客系统,主要用于创建、管理和发布Web日志。这个压缩包"apache-roller-4.0.1"包含了Apache Roller的第4.0.1版本,这是一个基于Java技术构建的Web应用程序。接下来,我们将深入探讨Apache...
了解和掌握 `roller.properties` 文件中的各项配置对管理 Roller 至关重要。 #### 结论 Apache Roller 是一款强大的开源博客平台,适用于企业和个人用户。通过本文档的学习,你应该能够成功地安装和配置 Roller,...
- **任务调度**:使用`App\Console\Kernel`类中的`schedule`方法,可以定义定时任务,如清理缓存、发送邮件等。 7. **错误与日志** - **错误处理**:Laravel有完善的错误报告机制,包括异常处理和错误页面。 - *...
2. 功能介绍:详细解释roller的各种功能,如博客发布、文章编辑、评论管理、用户管理、权限设置等。 3. 创建内容:指导用户如何创建和编辑博客文章,可能涉及文本格式化、添加图片、链接等。 4. 博客定制:解释如何...
Apache Roller 是一个功能丰富的Web日志管理平台,它支持多用户、多博客的环境,并且完全基于Java技术实现。源代码包"apache-roller-src-4.0.1"是Roller项目的4.0.1版本的源码,对开发者来说,这是一个深入了解...
该软件是一个开源的BLOG系统,是目前的最新版。 其中用到的技术有:SPRING HIBERNATE STRUTS等。 一共4部分
apache-roller-srapaapache-roller-srcche-roller-srccapache-rolaapache-roller-srcpache-roller-srcler-srcapapache-roller-srcache-roller-srcapache-roller-src