在Jboss中使用Quartz

Jboss EJB默认使用的定时服务是TimerService,TimerService的使用过程较为繁琐,需要使用一个无状态的serviceBean去实现scheduleTimer, timeoutHandler方法,并且要通过外部调用去启动和控制定时器的频率。在使用过程中觉得TimerService定时器非常不好用。因此希望能使用简单好用Quartz来做为服务器的定时器。

如果使用Quartz定时器,在启动定时服务前,需要初始化定时的内容,但在Jboss Ejb中,我实在是找不到能让Quartz初始化的办法,没有web.xml文件,也无法配置init方法。最初想到的办法是让TimerService去调用一次Quartz定时器的初始化方法,来启动Quartz定时器。但这实在不是一个好的方法,。后来在一次无意中使用google搜索ejb quartz时(使用baidu,真找不到这文章), 看到了曙光http://docs.jboss.org/ejb3/docs/tutorial/1.0.7/html/Quartz_scheduler_integration.html

原来在jboss的ejb3文档中,已经清楚的说明整合Quartz的办法。

下面简单的解释一下,EJB3中使用Quartz的方法

 1 import javax.ejb.ActivationConfigProperty;
 2 import javax.ejb.MessageDriven;
 3 import javax.inject.Inject;
 4
 5 import org.apache.log4j.Logger;
 6 import org.jboss.annotation.ejb.ResourceAdapter;
 7 import org.quartz.Job;
 8 import org.quartz.JobExecutionContext;
 9 import org.quartz.JobExecutionException;
10 //@MessageDriven注释指明这是一个消息驱动Bean,并使用@ActivationConfigProperty注释配置消息的各种属性
11 //@ResourceAdapter告诉EJB容器使用哪种ResourceAdapter
12 @MessageDriven(activationConfig =
13 {@ActivationConfigProperty(propertyName = "cronTrigger", propertyValue = "0/2 * * * * ?")})
14 @ResourceAdapter("quartz-ra.rar")
15 public class AnnotatedQuartzMDBBean implements Job
16 {
17      @Override
18     public void execute(JobExecutionContext arg0) throws JobExecutionException {
19       //定时器执行内容
20      }
21 }
时间: 2024-11-06 11:23:33

在Jboss中使用Quartz的相关文章

项目中使用Quartz集群分享--转载

项目中使用Quartz集群分享--转载 在公司分享了Quartz,发布出来,希望大家讨论补充. CRM使用Quartz集群分享  一:CRM对定时任务的依赖与问题  二:什么是quartz,如何使用,集群,优化  三:CRM中quartz与Spring结合使用 1:CRM对定时任务的依赖与问题  1)依赖  (1)每天晚上的定时任务,通过sql脚本 + crontab方式执行 Xml代码   #crm 0 2 * * * /opt/***/javafiles/***/shell/***_dail

spring 中集成quartz定时器及quartz中cronExpression配置说明

 spring 中集成quartz: spring文件的配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http:/

Spring 中使用Quartz实现任务调度

前言:Spring中使用Quartz 有两种方式,一种是继承特定的基类:org.springframework.scheduling.quartz.QuartzJobBean,另一种则不需要,(推荐使用第二种).下面分别介绍. 1.作业类继承 org.springframework.scheduling.quartz.QuartzJobBean 第一步:定义作业类 java代码 1 import java.text.SimpleDateFormat; 2 import java.util.Dat

(4) Spring中定时任务Quartz集群配置学习

原 来配置的Quartz是通过spring配置文件生效的,发现在非集群式的服务器上运行良好,但是将工程部署到水平集群服务器上去后改定时功能不能正常运 行,没有任何错误日志,于是从jar包.JDK版本.cronExpression到服务器类型,甚至查到了服务器操作系统的类型,都没能找到解决的办 法,后来才知道是集群惹的祸! 详细步骤如下: 1. 按照Quartz集群工作原理 图:表示了每个节点直接与数据库通信,若离开数据库将对其他节点一无所知 在数据库中建表.建表模版在Quartz包下docs/d

JBOSS 中oracle-ds.xml的配置模板

http://blog.csdn.net/bo_hai/article/details/6076979 JBOSS 中oracle-ds.xml的配置模板. 代码模版: <?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== --> <!--             

jboss中发布项目如何去掉上下文

正常发布的web项目访问需要加上项目的名称,又称为上下文.有时候我们需要去掉上下文,直接通过ip地址加端口号来实现访问.实现起来很简单,只需要在你的war包的WEB-INF目录下加入jboss-web.xml文件,具体内容 <?xml version="1.0" encoding="UTF-8"?> <jboss-web> <context-root>/</context-root> </jboss-web>

Spring中使用Quartz之MethodInvokingJobDetailFactoryBean配置任务

Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz. Spring中使用Quartz的3种方法(MethodInvokingJobDetailFactoryBean,implements Job,extends QuartzJobBean): 以下为在Spring中怎样配置Quartz: 首先写一个被调度的类: package com.test.quartz; public class QuartzJob { public void work() { System

.Net Core中使用Quartz.Net

原文:.Net Core中使用Quartz.Net 一.介绍 Quartz.Net是根据Java的Quartz用C#改写而来,最新的版本是3.0.6,源码在https://github.com/quartznet/quartznet.主要作用是做一些周期性的工作,或者定时工作.比如每天凌晨2点对前一天的数据统计. 二.简单的案例 以WebApi项目举例,用VS脚手架功能新建WebApi项目. public void ConfigureServices(IServiceCollection ser

spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法

在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appBase="" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="webapps/demo" reloadable=&quo