转自:http://blog.csdn.net/beenin/article/details/4363075
在企业应用中,需要编写后台定时服务的需求经常会遇到,如要对某个数据表的字段进行定时刷新等。
在基于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 * * * ?";
-
Date stoptime = new Date(now + 360000000000L);
-
-
entOnlineProcessor.scheduleOnlineTask(when, cron, stoptime);
-
log.info("客户端代理服务服务已成功启动");
-
-
}
-
-
-
}
@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>
-
-
-
-
<async:quartz-dispatcher/>
-
sp;
<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;
-
}
-
-
}
@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 * * * ?";
-
entOnlineProcessor.scheduleOnlineTask(when, cron, stoptime);
-
log.info("客户端代理服务服务已成功启动");
分享到:
相关推荐
- Seam定时器基于Quartz库,Quartz是一个开源的作业调度框架,能够管理计划性的任务。 - 定时器可以在应用程序启动时运行,或者在满足特定条件时触发,例如在用户会话结束时清理资源。 2. **配置定时器**: - 在...
这个"Seam_2.0_Reference_zh_CN.pdf"文档很可能是Seam框架的中文参考指南,旨在帮助中国开发者更好地理解和应用Seam 2.0。 1. **Seam框架概述**:Seam的核心目标是简化企业级Java应用程序的开发,通过消除传统Java ...
MATLAB_Seam_Carving_seamcarving_ 是一个与图像处理相关的项目,主要涉及到一种称为“seam carving”的技术,这是一种动态图像调整大小的方法,它可以在不改变图像整体视觉效果的情况下,增加或减少图像的宽度和...
这个名为"Seam-Carving-Matlab-master.rar_boardkkc_seam_seam carving_seamca"的压缩包文件包含了Matlab实现的Seam Carving算法,非常适合学习和理解这一技术。 Seam Carving的基本思想是找到图像中的一条或几条...
在"seam_carving"这个主题中,我们主要关注如何实现这一算法。在提供的压缩包文件中,`seam.m`很可能是一个MATLAB代码文件,它包含了Seam Carving的基本操作。MATLAB是一种广泛用于科学计算、图像处理和数据分析的...
除了基础的邮件服务、工作流支持,Seam还能够轻松整合其他工具和库,如EJB、JMS、WS等,提供一站式解决方案,这在某些方面甚至超越了Spring的集成能力。 总之,Seam作为一个创新的Java框架,通过其独特的设计和功能...
"seam_carving_缩小"则是减小图像尺寸,通过删除那些对整体视觉影响较小的接缝像素来实现。同样,这个过程也尽量保持了图像内容的完整性。 "图像重定向"是指在改变图像尺寸时,不仅考虑像素的位置,还考虑像素的...
Seam是一个基于Java EE平台的应用程序框架,它集成了JSF、EJB和其他技术来简化企业级应用的开发过程。下面将从几个方面详细阐述Seam 2.0中的关键技术点。 ### 1. Seam简介 Seam是一个开源框架,它通过提供一系列...
JBoss Seam是一个开源的企业级Java框架,它将JavaServer Faces (JSF)、Java Persistence API (JPA)、Java Management Extensions (JMX)等技术无缝集成,为开发富互联网应用程序(RIA)提供了强大的工具。 本书内容...
标题:seam_me_getting_started.pdf 描述:seam与myeclipse的结合,初学者用 本文章将深入解析如何在MyEclipse环境中构建并部署一个简单的Seam应用(注册示例)到JBoss服务器上,这尤其适用于Seam初学者。我们将...
本书主要讲解了 Seam 框架在 Java EE 3 环境中的应用与开发实践。接下来将根据书名、描述以及部分内容对该书籍涉及的主要知识点进行详细解析。 ### 一、Seam框架简介 #### 1.1 什么是Seam Seam 是一个开源的 Java ...
Seam,全称为JBoss Seam,是一款基于Java EE 5的技术栈构建的应用框架。它通过整合JSF(JavaServer Faces)与EJB 3.0(Enterprise JavaBeans 3.0)组件,并充分利用JDK 5.0中的注解技术,为开发人员提供了构建复杂...
在这个名为"CUDA_Seam_Carving.rar_cuda_seam_seam carving"的压缩包中,我们看到的是一个使用CUDA实现的Seam Carving算法的实例。 Seam Carving是一种图像内容感知的缩放技术,由Ariel Shamir和Shai Avidan在2008...
- **Seam简介**:Seam是一个基于Java EE的应用框架,它简化了企业级应用的开发过程,尤其是在Web应用领域有着广泛的应用。Seam通过集成多种技术如JSF、EJB 3.0等,为开发者提供了一个强大的开发平台。 - **安装到...
【MATLAB_Seam_Carving.rar】是一个关于图像调整大小技术的压缩包,重点在于"seam carving"方法,也称为“缝合雕刻”。Seam carving是一种动态图像缩放技术,它通过删除或添加图像中的能量最低的像素行或列来改变...
标题:Seam_Reference_Guide — A Framework for Java EE 5 描述:本书是关于Seam框架的参考指南,旨在为Java EE 5开发者提供深入理解与应用Seam的知识点。 ### Seam框架概览 Seam框架是为Java EE 5环境设计的一...
**正文** Seam Carving,又称为Seam Carving,是一种图像处理技术,主要用于图像的无损缩放和对象删除。...在实际应用中,Seam Carving技术可以广泛应用于照片编辑、视频处理等领域,展示了强大的图像变形能力。
Seam框架是一个全面的Java企业级开发框架,它在2005年由JBoss公司推出,...在实际项目中,可以参考“seam_all”压缩包中的资料,这通常包含Seam框架的文档、示例代码和教程,对于深入理解和应用Seam框架非常有帮助。