`
happylo
  • 浏览: 47303 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

基于Seam框架的后台定时执行服务

阅读更多

[原创于:http://happydev.iteye.com]

 

在企业应用中,需要编写后台定时服务的需求经常会遇到,如要对某个数据表的字段进行定时刷新等。

在基于Seam框架中要编写一个后台定时执行服务主要要考虑以下两个方面:

 

  1. 服务的初始化;
  2. 服务的定时执行;

 

 

本文以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("客户端代理服务服务已成功启动");

 

 

 

 

 

 

 

 

 

 

分享到:
评论
6 楼 yourenyouyu2008 2009-09-02  
jzy19861984 写道
在Quartz中,存在一个StatefulJob,就是有状态Job,如果想在Seam中实现相同的东西,该怎么办呢?谢谢

可以自定义个组件来实现StatefulJob。
5 楼 eosite 2009-03-25  
eosite 写道

这例子是否缺少了些配置?运行不起来

可以运行起来了,谢谢啦
4 楼 eosite 2009-03-25  
这例子是否缺少了些配置?运行不起来
3 楼 jzy19861984 2009-03-06  
我这段时间就在搞Seam,成天搞的头晕,呵呵,新的颠覆传统的东西感觉学起来总是那么费劲。
我用的Seam版本是2.1.1.GA的,在使用其提供的Quartz中有很多问题,感觉到Seam对Quartz的集成并不理想(可能是我还不会使用,如果我下面说的有错误,还请您帮我指正 )。这么说是因为我有以下的问题不知道该如何在Seam提供的Quartz调度功能中实现(而这些功能在原始的Quartz中很轻易就可以实现的):
[list]
  • 1、无法指定Trigger 和 Job的名称、组
  • [*]2、在使用Quartz的JobStoreCMT时,将Job调度现场存储至数据库后,让Seam异常中止。再次启动后,就又会再生成另一个新的调度!我无法像在Quartz中一样,使用
    Scheduler.getTriggerGroups()
    Scheduler.getTriggerNames()
    等方法获取Tirgger信息等,就算获取到了,由于第 1 点提到的问题,也没法判断是否是你想要的那个Trigger或Job,以恢复或者删除对应的调度。
    [*]3、使用Seam集成的Quartz,能不能创建一个可以指定其执行次数的调度?这在原始的Quartz中是使用
    Trigger.setRepeatCount(int count);
    实现的
  • 4、就是我问到的那个StatefulJob问题
  • [/list]
    Quartz是多好的一个东西,有很好很方便很多的优点,被Seam这么一封装,搞的跟个太监似的,总觉得少点啥玩意。
    哎,咱的鸟语不好,没法和人家Seam社区的沟通,只能在你这倒苦水啦,哈哈。
    不知道我说的这些算不算问题?还是我真的不了解不会使用Seam的这个功能呢?
    期盼回复。
    2 楼 happylo 2009-03-05  
    jzy19861984 写道

    在Quartz中,存在一个StatefulJob,就是有状态Job,如果想在Seam中实现相同的东西,该怎么办呢?谢谢

    应该可以通过Seam组件的生命周期来实现,如将保持状态数据的Seam组件的生命周期设置为Application。
    1 楼 jzy19861984 2009-03-05  
    在Quartz中,存在一个StatefulJob,就是有状态Job,如果想在Seam中实现相同的东西,该怎么办呢?谢谢

    相关推荐

      Seam框架文档简述

      Seam,全称为JBoss Seam,是一款基于Java EE 5的技术栈构建的应用框架。它通过整合JSF(JavaServer Faces)与EJB 3.0(Enterprise JavaBeans 3.0)组件,并充分利用JDK 5.0中的注解技术,为开发人员提供了构建复杂...

      基于Seam框架实现省、市、区县的联动选择

      首先,Seam框架是一个基于Java EE的全栈框架,它集成了JSF、EJB、CDI和JPA等多个技术,提供了一种声明式编程模型,简化了企业级应用的开发。在实现省市区联动选择时,Seam框架可以有效地管理组件之间的交互和状态,...

      seam框架相关知识总结

      Seam框架是一个全面的Java企业级开发框架,它在2005年由JBoss公司推出,主要用于简化Java EE应用的复杂性,特别是整合了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)等技术。Seam框架的...

      基于Seam2.1的最新力作《Seam Framework: Experience the Evolution of Java EE, 2nd Edition》全书

      Seam框架是JBoss组织推出的一个开源项目,旨在简化企业级应用开发,通过提供一套完整的、易于使用的组件和服务来实现这一目标。它基于Java EE标准,特别是JSF(JavaServer Faces)和EJB 3.0等技术,并在其基础上进行...

      Seam_Java框架.doc

      Seam是一个针对Java开发的全栈式框架,旨在简化开发过程,提高开发效率。它适应了快速开发和简化架构的需求,与传统的Java框架相比,Seam具有更简洁的层次结构和强大的组件机制。 首先,Seam的核心设计理念在于减少...

      seam 框架整合hibernate+jsf

      Seam框架是一个全面的Java EE应用开发框架,它旨在简化企业级应用的开发流程,尤其在整合用户界面、业务逻辑和服务层方面。本资源重点讨论了Seam如何与Hibernate ORM框架以及JavaServer Faces (JSF) 用户界面技术...

      Seam 2.1 安全模块框架

      3. **权限验证**:Seam 包含一个广泛适用的权限验证框架,支持基于角色的访问控制(RBAC)、持久化权限设置以及规则驱动的权限决策。这使得开发者可以根据业务逻辑创建自定义的安全策略。 4. **权限管理**:Seam ...

      基于seam的datatable全选解决方案

      Seam是一个全面的Java EE框架,它集成了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)等多个技术,提供了丰富的功能来简化开发流程。在Seam框架下,DataTable是一个常用的数据展示组件,...

      使用JBoss Studio開發Seam框架專案(圖式教學)

      **使用JBoss Studio开发Seam框架项目图式教学** Seam框架是一款强大的Java EE集成框架,它简化了在企业级应用程序中的开发流程,特别是在使用EJB、JSF、CDI和JPA等技术时。而JBoss Studio是Red Hat公司推出的一款...

      JBoss Seam

      JBoss Seam是一个开源的应用框架,它基于Java EE标准,但通过引入一系列创新特性,极大地简化了企业级应用的开发过程。Seam框架主要针对Web应用的构建,它将各种Java EE技术如JSF(JavaServer Faces)、EJB...

      seam in action

      ### Seam 框架知识点详解 #### 一、Seam框架概述 - **定义与特点**:Seam是一个建立在Java EE平台上的快速应用开发框架,它极大地简化了企业级应用的开发流程。通过整合一系列Java EE技术如JSF、EJB 3.0等,Seam...

      MATLAB_Seam_Carving_seamcarving_

      Seam Carving是一种基于能量的图像缩放技术,由Ariel Shamir和Shai Avidan在2007年提出。它的核心思想是找出图像中的一条或多条“能量最低”的路径(seam),沿着这些路径删除或添加像素,从而实现图像的等比例或非...

      seam_reference英文文档,讲解Seam更详细

      - **“拉取”式MVC的使用**:这部分介绍了如何利用Seam框架实现基于“拉取”式的模型视图控制器(MVC)模式。 - **可书签搜索结果页**:通过博客示例,解释了如何创建可被收藏的搜索结果页面。 - **在RESTful应用中...

      Jboss seam3 实战

      JBoss Seam是一个开源的Java EE框架,它通过依赖注入和会话模型,简化了基于Java EE的企业级应用开发。Seam框架为开发者提供了一个集成化的环境,其中整合了多种技术规范,比如EJB3、JSF、JPA、SessionBean、MDB和...

      seam in action 中文 english

      《Seam in Action》是一本专门探讨Seam框架的书籍,该书分为中文和英文两个版本,对于初学者和有经验的开发者来说都是一个宝贵的资源。Seam是一个强大的Java EE框架,它集成了多种技术,如JavaServer Faces (JSF)、...

      基于Seam Carving和深度学习的车标识别系统研究与实现.pdf

      本文提出的基于SeamCarving和深度学习的车标识别算法,不仅响应了智能交通系统对于高效准确车标识别技术的需求,还通过优化的图像预处理技术显著提升了识别过程的效率和准确性。该研究为智能交通领域中的车标识别...

      jboss seam 学习资料,seam in action和官方手册

      10. **实用工具**:包括邮件服务、定时任务、PDF生成等功能的使用说明。 通过阅读这些材料,开发者可以全面了解和掌握JBoss Seam框架,提升其在企业级Java应用开发中的技能。不论是初学者还是经验丰富的开发者,都...

      基于Seam2.1的最新力作《Seam Framework: Experience the Evolution of Java EE, 2nd Edition》摘要

      ### 基于Seam2.1的最新力作《Seam Framework: Experience the Evolution of Java EE, 2nd Edition》摘要分析 #### 核心概念:Seam框架概述 Seam框架是一款革命性的Web应用开发框架,它将标准的Java EE技术与一系列...

      Seam-gen生成基础项目骨架

      Seam-gen 是一款用于快速生成基于 Seam 框架的基础项目结构的工具,它通过简单的命令行交互式过程,帮助开发者构建项目的雏形,并且能够根据数据库信息自动生成管理数据库的 CRUD(Create, Read, Update, Delete)...

    Global site tag (gtag.js) - Google Analytics