- 浏览: 801341 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
定时服务用作在一段特定的时间后执行某段程序,估计各位在不同的场合中已经使用过。下面就直接介绍EJB3.0
定时服务的开发过程。定时服务的开发过程与会话Bean 的开发过程大致相同,但比会话Bean 多了几个操作,那
就是使用容器对象SessionContext 创建定时器,并使用@Timeout 注释声明定时器方法。
下面定义一个每隔3 秒触发一次事件的定时器,当定时事件触发次数超过5 次的时候便终止定时器的执行
步骤1:首先写一个远程接口,主要的目的是创建一个定时器 TimerService.java
package cn.com.xinli.ejb3.task; public interface TimerService { public void scheduleTimer(long milliseconds); }
步骤2: 在定义一个无状态的会话bean,它实现了 TimerService 接口,并且使用 @Timeout 注解 表明了 当定时器工作的时候需要直接的业务方法,供容器回调使用 TimerServiceBean.java
通过依赖注入@Resource SessionContext ctx,我们获得SessionContext 对象,调用ctx.getTimerService().createTimer
(Date arg0, long arg1, Serializable arg2)方法创建定时器,三个参数的含义如下:
Date arg0 定时器启动时间,如果传入时间小于现在时间,定时器会立刻启动。
long arg1 间隔多长时间后再次触发定时事件。单位:毫秒
Serializable arg2 你需要传给定时器的参数,该参数必须实现Serializable 接口。
当定时器创建完成后,我们还需声明定时器方法。定时器方法的声明很简单,只需在方法上面加入@Timeout 注
释,另外定时器方法必须遵守如下格式:
void XXX(Timer timer)
注意:createTimer() 有4个重载的方法,分别代表不同的定时器,此例创建的是一个
每隔规定的时间反复执行的定时器,其他3种定时器 读者可以自行实验
在定时事件发生时,此方法将被执行
package cn.com.xinli.ejb3.task.impl; import java.util.Date; import javax.annotation.Resource; import javax.ejb.Remote; import javax.ejb.SessionContext; import javax.ejb.Stateless; import javax.ejb.Timeout; import javax.ejb.Timer; import cn.com.xinli.ejb3.task.TimerService; @Stateless @Remote ({TimerService.class}) public class TimerServiceBean implements TimerService { private int count = 1; private @Resource SessionContext ctx; public void scheduleTimer(long milliseconds) { count = 1; ctx.getTimerService(). createTimer(new Date(new Date().getTime() + milliseconds),milliseconds, "大家好,这是我的第一个定时器"); } @Timeout public void timeoutHandler(Timer timer) { System.out.println("---------------------"); System.out.println("定时器事件发生,传进的参数为: " + timer.getInfo()); System.out.println("定时器事件发生,传进的参数为: " + timer.getNextTimeout()); System.out.println("---------------------"); if (count>=5) { timer.cancel();//如果定时器触发5次,便终止定时器 } count++; } }
步骤3:写测试用例:
package cn.com.xinli.ejb3.test; import java.util.Date; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import cn.com.xinli.ejb3.task.TimerService; public class TaskClient { public static void main(String[] args) { Hashtable evn = new Hashtable(); evn.put(Context.PROVIDER_URL, "127.0.0.1:1099"); evn.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); // Properties properties=new Properties(); // properties.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); // properties.setProperty("java.naming.provider.url", "localhost:1099"); try { System.out.println(new Date().getTime()); InitialContext ctx=new InitialContext(evn); TimerService timer = (TimerService) ctx.lookup("TimerServiceBean/remote"); timer.scheduleTimer((long)3000); System.out.println("定时器已经启动,请观察Jboss控制台输出,如果定时器触发5次,便终止定时器"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
eclipse 控制台日志:
定时器已经启动,请观察Jboss控制台输出,如果定时器触发5次,便终止定时器
jboss 日志:
08:25:02,328 INFO [STDOUT] 定时器事件发生,传进的参数为: 大家好,这是我的第一个
定时器
08:25:02,328 INFO [STDOUT] 下次触发时间为: Wed Oct 28 08:25:05 CST 2009
08:25:02,328 INFO [STDOUT] ---------------------
08:25:05,328 INFO [STDOUT] ---------------------
08:25:05,328 INFO [STDOUT] 定时器事件发生,传进的参数为: 大家好,这是我的第一个
定时器
08:25:05,328 INFO [STDOUT] 下次触发时间为: Wed Oct 28 08:25:08 CST 2009
08:25:05,328 INFO [STDOUT] ---------------------
08:25:08,328 INFO [STDOUT] ---------------------
08:25:08,328 INFO [STDOUT] 定时器事件发生,传进的参数为: 大家好,这是我的第一个
定时器
08:25:08,328 INFO [STDOUT] 下次触发时间为: Wed Oct 28 08:25:11 CST 2009
08:25:08,328 INFO [STDOUT] ---------------------
08:25:11,328 INFO [STDOUT] ---------------------
08:25:11,343 INFO [STDOUT] 定时器事件发生,传进的参数为: 大家好,这是我的第一个
定时器
08:25:11,343 INFO [STDOUT] 下次触发时间为: Wed Oct 28 08:25:14 CST 2009
08:25:11,343 INFO [STDOUT] ---------------------
08:25:14,906 INFO [STDOUT] ---------------------
08:25:14,906 INFO [STDOUT] 定时器事件发生,传进的参数为: 大家好,这是我的第一个
定时器
08:25:14,906 INFO [STDOUT] 下次触发时间为: Wed Oct 28 08:25:17 CST 2009
08:25:14,906 INFO [STDOUT] ---------------------
附件中是项目源文件和ant脚本
- ejb3HelloWord.rar (24.5 KB)
- 下载次数: 88
发表评论
-
本地客户端调用 websphere6.1 ejb资源 解决方案
2011-01-21 12:25 1782开发环境: 中我们都是在jboss4.0上部署ejb2. ... -
ejb2.0用本地引用提高EJB访问效率
2009-12-24 15:21 3005用本地引用提高EJB访问效率 EJB 1 ... -
ejb3.0 跨平台,跨JVM调用出现的问题及解决方案
2009-11-09 21:58 2329首先 ... -
ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)
2009-10-23 11:12 2306消息驱动bean主要使用在异步的业务 ... -
ejb3 第12讲 --开发EJB容器模型的WEB服务
2009-08-05 08:04 3870JAX-WS JAX-WS规范是一组XML web ... -
ejb3 第10讲 --开发单表映射的实体bean
2009-08-02 23:29 1493目的:使用ejb3 ... -
ejb3 第9讲 --配置jboss数据源
2009-08-02 20:19 1103这个比较简单: 去$JBOSS_HOME\ ... -
ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务
2009-07-08 08:02 3250情景:有两个bean,一个是HelloWorldBean ... -
ejb3 第7讲 --开发有状态bean
2009-07-05 21:21 1402用 @Stateful 注解的方式表明 bean是有状态 ... -
ejb3 第6讲--开发具有本地接口的无状态bean
2009-07-03 07:01 2827理解: 1.当ejb的服务器端和客户端 ... -
ejb3 第5讲--通过ANT提高EJB应用的开发效率
2009-07-02 22:10 1435<?xml version="1.0" ... -
ejb3 第4讲--把jboss集成进eclipse
2009-06-29 22:45 1263这个比较简单,就不多说了 -
ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端
2009-06-29 22:11 1664ejb中的3种bean: 什么是会话bea ... -
ejb3.0第11讲 --开发消息驱动bean
2009-06-24 08:23 2603概念: 1.java ... -
ejb3.0 --第1讲下载安装运行JBOSS
2009-06-24 07:08 15861.下载地址:jboss4.2.3http://www. ... -
ejb2.0 HelloWord
2008-09-27 07:38 7957中国电信网上营业厅项目是使用ejb2.0开发的,在项目中 ...
相关推荐
3SessionBean(会话Bean) 18 3.1会话Bean调用架构 18 3.2会话Bean的客户 18 3.3会话Bean的组成 19 3.4Stateless SessionBean(无状态会话Bean) 3.4.1需求 19 3.4.2Remote接口 20 3.4.3Local接口 21 3.4.4Bean类 22...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
本书讲解Java Web开发中的高级开发技术,包括企业级的开发技术EJB、各种Java EE的分布式开发技术、Java Web的各种开源技术与框架,这3部分内容层层递进,涵盖了Java EE开发中的各种分布式与业务核心技术。...
像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...
像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...
像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...