[原创于:http://happydev.iteye.com]
在企业应用中,需要编写后台定时服务的需求经常会遇到,如要对某个数据表的字段进行定时刷新等。
在基于Seam框架中要编写一个后台定时执行服务主要要考虑以下两个方面:
- 服务的初始化;
- 服务的定时执行;
本文以Seam集成的QuartZ来实现后台定时执行服务。
一、服务的初始化
服务的初始化Seam组件:
@Name("scheduleController")
@AutoCreate
public class ScheduleController implements Serializable {
private static final long serialVersionUID = -6332836501640042340L;
@In
EntityManager entityManager;
@In
EntOnlineProcessor entOnlineProcessor;
@Logger
Log log;
public void scheduleTimer() {
//启动客户端代理服务
Long now = System.currentTimeMillis();
Date when = new Date(now);
String cron = "0 0/1 * * * ?";//每1分钟
Date stoptime = new Date(now + 360000000000L);
entOnlineProcessor.scheduleOnlineTask(when, cron, stoptime);
log.info("客户端代理服务服务已成功启动");
}
}
在Seam框架中如何在Seam环境初始化后来自动执行该初始化方法呢,可以components.xml的配置来实现:
<event type="org.jboss.seam.postInitialization">
<action execute="#{scheduleController.scheduleTimer}"/>
</event>
<!-- Install the QuartzDispatcher -->
<async:quartz-dispatcher/>
二、服务的定时执行
服务的定时执行关键是服务的实现,参考实现如下代码:
@Name("entOnlineProcessor")
@AutoCreate
public class EntOnlineProcessor {
@In
EntityManager entityManager;
@Logger Log log;
@Asynchronous
@Transactional
public QuartzTriggerHandle scheduleOnlineTask(@Expiration Date when,
@IntervalCron String cron,
@FinalExpiration Date stoptime)
{
......
return null;
}
}
关于如何触发该异步方法,并且控制定时机制在上一个代码中已包含了:
//启动客户端代理服务
cron = "0 0/1 * * * ?";//每1分钟
entOnlineProcessor.scheduleOnlineTask(when, cron, stoptime);
log.info("客户端代理服务服务已成功启动");
分享到:
相关推荐
Seam,全称为JBoss Seam,是一款基于Java EE 5的技术栈构建的应用框架。它通过整合JSF(JavaServer Faces)与EJB 3.0(Enterprise JavaBeans 3.0)组件,并充分利用JDK 5.0中的注解技术,为开发人员提供了构建复杂...
首先,Seam框架是一个基于Java EE的全栈框架,它集成了JSF、EJB、CDI和JPA等多个技术,提供了一种声明式编程模型,简化了企业级应用的开发。在实现省市区联动选择时,Seam框架可以有效地管理组件之间的交互和状态,...
Seam框架是一个全面的Java企业级开发框架,它在2005年由JBoss公司推出,主要用于简化Java EE应用的复杂性,特别是整合了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)等技术。Seam框架的...
Seam框架是JBoss组织推出的一个开源项目,旨在简化企业级应用开发,通过提供一套完整的、易于使用的组件和服务来实现这一目标。它基于Java EE标准,特别是JSF(JavaServer Faces)和EJB 3.0等技术,并在其基础上进行...
Seam是一个针对Java开发的全栈式框架,旨在简化开发过程,提高开发效率。它适应了快速开发和简化架构的需求,与传统的Java框架相比,Seam具有更简洁的层次结构和强大的组件机制。 首先,Seam的核心设计理念在于减少...
Seam框架是一个全面的Java EE应用开发框架,它旨在简化企业级应用的开发流程,尤其在整合用户界面、业务逻辑和服务层方面。本资源重点讨论了Seam如何与Hibernate ORM框架以及JavaServer Faces (JSF) 用户界面技术...
3. **权限验证**:Seam 包含一个广泛适用的权限验证框架,支持基于角色的访问控制(RBAC)、持久化权限设置以及规则驱动的权限决策。这使得开发者可以根据业务逻辑创建自定义的安全策略。 4. **权限管理**:Seam ...
Seam是一个全面的Java EE框架,它集成了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)等多个技术,提供了丰富的功能来简化开发流程。在Seam框架下,DataTable是一个常用的数据展示组件,...
**使用JBoss Studio开发Seam框架项目图式教学** Seam框架是一款强大的Java EE集成框架,它简化了在企业级应用程序中的开发流程,特别是在使用EJB、JSF、CDI和JPA等技术时。而JBoss Studio是Red Hat公司推出的一款...
JBoss Seam是一个开源的应用框架,它基于Java EE标准,但通过引入一系列创新特性,极大地简化了企业级应用的开发过程。Seam框架主要针对Web应用的构建,它将各种Java EE技术如JSF(JavaServer Faces)、EJB...
### Seam 框架知识点详解 #### 一、Seam框架概述 - **定义与特点**:Seam是一个建立在Java EE平台上的快速应用开发框架,它极大地简化了企业级应用的开发流程。通过整合一系列Java EE技术如JSF、EJB 3.0等,Seam...
Seam Carving是一种基于能量的图像缩放技术,由Ariel Shamir和Shai Avidan在2007年提出。它的核心思想是找出图像中的一条或多条“能量最低”的路径(seam),沿着这些路径删除或添加像素,从而实现图像的等比例或非...
- **“拉取”式MVC的使用**:这部分介绍了如何利用Seam框架实现基于“拉取”式的模型视图控制器(MVC)模式。 - **可书签搜索结果页**:通过博客示例,解释了如何创建可被收藏的搜索结果页面。 - **在RESTful应用中...
JBoss Seam是一个开源的Java EE框架,它通过依赖注入和会话模型,简化了基于Java EE的企业级应用开发。Seam框架为开发者提供了一个集成化的环境,其中整合了多种技术规范,比如EJB3、JSF、JPA、SessionBean、MDB和...
《Seam in Action》是一本专门探讨Seam框架的书籍,该书分为中文和英文两个版本,对于初学者和有经验的开发者来说都是一个宝贵的资源。Seam是一个强大的Java EE框架,它集成了多种技术,如JavaServer Faces (JSF)、...
本文提出的基于SeamCarving和深度学习的车标识别算法,不仅响应了智能交通系统对于高效准确车标识别技术的需求,还通过优化的图像预处理技术显著提升了识别过程的效率和准确性。该研究为智能交通领域中的车标识别...
10. **实用工具**:包括邮件服务、定时任务、PDF生成等功能的使用说明。 通过阅读这些材料,开发者可以全面了解和掌握JBoss Seam框架,提升其在企业级Java应用开发中的技能。不论是初学者还是经验丰富的开发者,都...
### 基于Seam2.1的最新力作《Seam Framework: Experience the Evolution of Java EE, 2nd Edition》摘要分析 #### 核心概念:Seam框架概述 Seam框架是一款革命性的Web应用开发框架,它将标准的Java EE技术与一系列...
Seam-gen 是一款用于快速生成基于 Seam 框架的基础项目结构的工具,它通过简单的命令行交互式过程,帮助开发者构建项目的雏形,并且能够根据数据库信息自动生成管理数据库的 CRUD(Create, Read, Update, Delete)...