- 浏览: 809142 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (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 1805开发环境: 中我们都是在jboss4.0上部署ejb2. ... -
ejb2.0用本地引用提高EJB访问效率
2009-12-24 15:21 3023用本地引用提高EJB访问效率 EJB 1 ... -
ejb3.0 跨平台,跨JVM调用出现的问题及解决方案
2009-11-09 21:58 2344首先 ... -
ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)
2009-10-23 11:12 2332消息驱动bean主要使用在异步的业务 ... -
ejb3 第12讲 --开发EJB容器模型的WEB服务
2009-08-05 08:04 3900JAX-WS JAX-WS规范是一组XML web ... -
ejb3 第10讲 --开发单表映射的实体bean
2009-08-02 23:29 1511目的:使用ejb3 ... -
ejb3 第9讲 --配置jboss数据源
2009-08-02 20:19 1116这个比较简单: 去$JBOSS_HOME\ ... -
ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务
2009-07-08 08:02 3274情景:有两个bean,一个是HelloWorldBean ... -
ejb3 第7讲 --开发有状态bean
2009-07-05 21:21 1421用 @Stateful 注解的方式表明 bean是有状态 ... -
ejb3 第6讲--开发具有本地接口的无状态bean
2009-07-03 07:01 2843理解: 1.当ejb的服务器端和客户端 ... -
ejb3 第5讲--通过ANT提高EJB应用的开发效率
2009-07-02 22:10 1450<?xml version="1.0" ... -
ejb3 第4讲--把jboss集成进eclipse
2009-06-29 22:45 1279这个比较简单,就不多说了 -
ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端
2009-06-29 22:11 1690ejb中的3种bean: 什么是会话bea ... -
ejb3.0第11讲 --开发消息驱动bean
2009-06-24 08:23 2619概念: 1.java ... -
ejb3.0 --第1讲下载安装运行JBOSS
2009-06-24 07:08 16051.下载地址:jboss4.2.3http://www. ... -
ejb2.0 HelloWord
2008-09-27 07:38 7986中国电信网上营业厅项目是使用ejb2.0开发的,在项目中 ...
相关推荐
除了基础的EJB开发,MyEclipse还支持EJB的高级特性,如EJB定时器(Timer Service)、EJB的并发控制(Concurrent annotations)、依赖注入(Dependency Injection)等。这些功能可以通过配置EJB元数据或使用Java EE的...
在`ejb-jar.xml`中,还可以定义安全性、依赖注入、定时器服务等高级特性。 `jboss-ejb3.xml`是JBoss AS 7特有的配置文件,用于扩展或覆盖`ejb-jar.xml`中的配置。这个文件允许开发者针对特定的JBoss实现进行更细致...
本文将围绕“Jboss下开发ejb应用之一会话bean的应用”这一主题,深入探讨如何在Jboss应用服务器上开发和部署会话Bean,以及涉及到的相关工具和源码。 会话Bean是EJB的一种类型,它代表了业务逻辑组件,为客户端提供...
EJB3引入了许多改进,包括简化API、注解驱动的开发和依赖注入,使得开发人员能够更轻松地利用企业级功能,如持久化、事务处理和安全。 **EJB3的核心特性:** 1. **注解驱动**:EJB3允许通过注解(如`@Stateless`、`...
- **会话上下文(Session Context)**:提供对环境和EJB服务的访问,如事务、安全性、定时器等。 在"j2ee ejb编程实例"这个压缩包中,读者可能找到与J2EE(Java 2 Platform, Enterprise Edition)相关的EJB实践示例...
EJB3是其第三个主要版本,引入了许多改进,使得开发过程更为简洁和高效。本培训PPT3将深入探讨EJB3的高级特性,帮助开发者提升专业技能。 1. **注解驱动的编程模型** EJB3的一大革新就是引入了注解,极大地简化了...
通过以上章节内容的概述,可以看出《EJB 3 In Action》是一本全面覆盖EJB 3.0技术栈的实用指南,适合于想要深入了解并掌握EJB 3.0的企业级开发人员阅读。无论是基础知识还是高级特性,《EJB 3 In Action》都能够为...
在实际开发中,了解和掌握EJB3的高级特性,如拦截器(Interceptors)、定时器(Timers)服务、安全性(Security)和并发控制(Concurrency Management)等,能够帮助开发者构建出更高效、稳定的企业级应用。...
ejb-3_1-pdr-api可能包含EJB 3.1的编程接口文档,这对于理解和使用EJB 3.1 API进行开发至关重要。开发者可以通过这些API了解如何创建、管理和部署EJB组件,以及如何与其他Java EE技术(如JPA、JTA、JMS)集成。 ...
在 EJB3 中,**依赖注入** 极大地简化了访问 EJB 资源(如 JDBC 数据源、JMS 对象和 JPA 实体管理器)和服务(如定时器、用户事务和 Web 服务)的过程。这使得开发者能够更加专注于业务逻辑而不是基础设施配置。 - ...
3. **创建定时器** - **编程方式创建**: 通过调用`TimerService.createTimer()`或`TimerService.schedule()`方法,可以创建单次或周期性的定时器。 - **注解方式创建**: 使用`@Schedule`注解,可以直接在实体Bean...
EJB3.0是EJB的一个重要版本,引入了许多改进,使得开发过程更为简化,降低了对Java EE程序员的复杂性要求。本篇文章将基于"EJB3.0书中的代码"来深入探讨EJB3.0的核心概念和关键特性。 1. **数据源配置** - `mysql-...
之后的版本EJB 3.1和EJB 3.2继续优化,增加了更多功能,如轻量级会话bean和定时器服务。 9. **比较与JPA、JSF和Spring**:EJB通常与JPA(对象关系映射)结合使用,提供数据持久化;JSF(JavaServer Faces)常用于...
- `javax.ejb.TimerService`:提供了定时任务的管理,可以在EJB中创建和管理定时器。 描述中提到的“开发EJB项目时需要的jar包”表明了`javax.ejb-3.1.2.2.jar`对于EJB项目的必要性。在开发环境中,这个jar需要被...
EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。...同时,不断探索和学习EJB的高级特性,如定时器服务、安全性、事务管理等,将有助于提升你在企业级应用开发中的技能。