在企业应用中,需要编写后台定时服务的需求经常会遇到,如要对某个数据表的字段进行定时刷新等。
在基于Seam框架中要编写一个后台定时执行服务主要要考虑以下两个方面:
- 服务的初始化;
- 服务的定时执行;
本文以Seam集成的QuartZ来实现后台定时执行服务。
一、服务的初始化
服务的初始化Seam组件:
- @Name("scheduleController")
-
@AutoCreate
-
publicclassScheduleControllerimplementsSerializable{
-
privatestaticfinallongserialVersionUID=-6332836501640042340L;
-
-
@In
- EntityManagerentityManager;
-
@In
- EntOnlineProcessorentOnlineProcessor;
-
-
@Logger
- Loglog;
-
publicvoidscheduleTimer(){
-
- Longnow=System.currentTimeMillis();
-
Datewhen=newDate(now);
-
Stringcron="00/1***?";
-
Datestoptime=newDate(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的配置来实现:
-
<eventtype="org.jboss.seam.postInitialization">
-
<actionexecute="#{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
-
publicclassEntOnlineProcessor{
-
@In
- EntityManagerentityManager;
-
@LoggerLoglog;
-
-
@Asynchronous
-
@Transactional
-
publicQuartzTriggerHandlescheduleOnlineTask(@ExpirationDatewhen,
-
@IntervalCronStringcron,
-
@FinalExpirationDatestoptime)
- {
- ......
-
returnnull;
- }
- }
@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="00/1***?";
- entOnlineProcessor.scheduleOnlineTask(when,cron,stoptime);
-
log.info("客户端代理服务服务已成功启动");
分享到:
相关推荐
利用seam carving方法来对图像进行放大缩小操作
Seam_2.0_Reference_zh_CN
seam carving的相关代码实现
seam_carving_for_content_aware_image_resizing pdf论文
对于一个图片seam carving的横向和纵向删除seam的操作,可以显示出seam曲线(matlab)
jboss-seam定时器,主要根据自己的需要系统设置自动执行
Seam_Dev_Tools_Reference_Guide.pdf
eam适应快速开发、简化框架的趋势,Seam给我的感觉像是一个异常简单的MVC框架
• 权限验证 - 一个应用十分广泛的权限验证框架,支持用户角色、持久化和基于规则的权限设置,能够灵活地实现属于用户自己的安全设置 • 权限管理 - 一组内置的Seam组件,能让应用程序的安全政策变得容易管理 • ...
seam in action seam in action seam in action seam in action seam in action seam in action seam in action
Jboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in Action
Seam Caving Algorithm Using CUDA
这是关于内容敏感图像重定向的代码,可以在放大或缩小图片的同时尽量保留图片的内容和结构。
运用seamcarving的方式,实现了对主体感知的图像放缩,以及删除图片中选中的部分
Seam全称是Jboss Seam,是一个Java EE 5框架。它通过把JSF与EJB3.0组件合并在一起,以及利用JDK5.0的Annotation技术,从而为开发基于Web的企业应用程序提供一个最新的模式。
seamcarving image resizing
Using the idea from Seam Carving for Content-Aware Image Resizing, the codes enables a selected image to resize without having distortion of important object in the image file.
seam ajax ejb jsf 最新文档
SeamCarving_using_deep_cnn_neural_newtwork 在这个项目中,我们尝试在速度和准确性方面改进接缝雕刻技术。 注意:-能量图是一个包含对象边缘的图像(灰度图像)。可以通过sobel,scharr,laplacian和其他许多滤镜...
JBoss_Enterprise_Application_Platform-5.0.1-Seam_Reference_Guide-en-US.pdf