关于session bean的一些问题
EJB里面,session bean是占了挺重要的地位的,一些重要的事情都是交给session bean来处理的
session BEAN一般用于操作一些对外的方法,供客户调用.会话BEAN分两种,一种 是有状态的会话BEAN,一种 是无状态的会话BEAN,它们有什么不同呢?
有状态的会话BEAN,会记录每一个调用者的状态,每个人都有一个自己的实例,相比之下,它比较耗内存.一般用于做专用的事情
无状态的会话BEAN,则不会记录每一个调用者的状态,所有人共有一个实例,所以它不耗内存,一般用于做一些通用的事情
会话BEAN中有一种叫定时服务,并不是所有的会话BEAN都可以有定时服务器,而只有无状态的会话BEAN可以有定时的服务,如果调用的是有状态的会话BEAN的话,那么运行时就会出异常,不知道是不是有状态的会话BEAN不允许有定时服务.对于会话BEAN,我们可以掌握它的生命周期
EJB容器创建和管理session bean实例,有些时候,你可能需要定制 session bean的管理过程。例如,你可能想在创
建session bean实例的时候初始化字段变量,或在bean实例被销毁的时候关掉外部资源。上述这些,你都可能通过
在 bean 类中定义生命周期的回调方法来实现。这些方法将会被容器在生命周期的不同阶段调用(如:创建或销
毁时)。通过使有下面所列的注释,EJB 3.0允许你将任何方法指定为回调方法。这不同于 EJB 2.1,EJB 2.1中,
所有的回调方法必须实现,即使是空的。EJB 3.0中,bean可以有任意数量,任意名字的回调方法。
·@PostConstruct:当bean对象完成实例化后,使用了这个注释的方法会被立即调用。这个注释同时适用于
有状态和无状态的会话bean。
·@PreDestroy:使用这个注释的方法会在容器从它的对象池中销毁一个无用的或者过期的 bean 实例之前调
用。这个注释同时适用于有状态和无状态的会话 bean。
·@PrePassivate:当一个有状态的session bean实例空闲过长的时间,容器将会钝化(passivate)它,并把它的
状态保存在缓存当中。使用这个注释的方法会在容器钝化bean实例之前调用。这个注释适用于有状态的会话bean。
当钝化后,又经过一段时间该 bean 仍然没有被操作,容器将会把它从存储介质中删除。以后,任何针对该 bean
方法的调用容器都会抛出例外。
·@PostActivate:当客户端再次使用已经被钝化的有状态 session bean 时,新的实例被创建,状态被恢复。
使用此注释的session bean会在bean的激活完成时调用。这个注释只适用于有状态的会话 bean。
·@Init:这个注释指定了有状态session bean初始化的方法。它区别于@PostConstruct注释在于:多个@Init
注释方法可以同时存在于有状态session bean 中,但每个 bean实例只会有一个@Init注释的方法会被调用。这取
决于bean是如何创建的(细节请看EJB 3.0规范)。@PostConstruct在@Init之后被调用。
另一个有用的生命周期方法注释是@Remove,特别是对于有状态 session bean。当应用通过存根对象调用使用了
@Remove注释的方法时,容器就知道在该方法执行完毕后,要把 bean实例从对象池中移走。
这里要注意的一点是,对于无状态的会话BEAN,即使你调用了标记为@Remove的方法,这个会话BEAN依然有效,所以,这个注释应该用在有状态的会话BEAN中,这样当你调用了它所标记的方法 后,再调用这个会话BEAN的其它方法就会抛出一个异常
javax.ejb.EJBNoSuchObjectException: Could not find Stateful bean:它会说找不到这个有状态的会话BEAN了,因为这个时候经过你调用了标记为@Remove的方法后,EJB容器已经将它销毁了,以后的任何调用都是无效的了,这样有利于我们更好的掌握会话BEAN的生命周期,免得产生很有有状态的会话BEAN的时候,过多的消耗服务器的内存.
分享到:
相关推荐
EJB初学者的列子,JBOSS包等的下载
EJB初学教程分章节示例,分几个层次学习,适合初学者学习实验
EJB初学者常有的十一个疑惑 EJB与JAVA BEAN的区别? 答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如...
ejb3.0教材,适合ejb初学者阅读!
本源代码主要向EJB初学者介绍JMS的使用,如何创建和初始化一个请求Requestor对象、如何初始化请求Requestor对象、如何建立一个会话和发送请求、如何打印出请求的过程信息、如何接受由反馈者replier发回的消息等。
ejb的教程,挺不错的,大家不妨看看,保证有收获
第1篇对EJB编程基础进行介绍,它概要性地对EJB进行了阐述,无论是EJB初学者,还是资深EJB专家,这部分内容都值得阅读;第2篇重点关注EJB编程的具体内容和过程,其中,研究了如何开发如下三种EJB组件:会话Bean、实体Bean和...
本教程适合具有Java 语言基础的EJB初学者。随着EJB3的发展,EJB2 将会逐步成为历史!!!!!1
本教程适合具有Java 语言基础的EJB 初学者。有读者来邮件问需不需要先学EJB2.0,作者明确地告诉你不用 学了。随着EJB3 的发展,EJB2 将会逐步成为历史。
实战EJB 实战EJB 实战EJB 电子书 pdf
最新EJB学习教程,适合初学者学习掌握,讲解比较精辟,
本书内容翔实、深入浅出,提供了详细的讨论和实例,对于懂Java语言的EJB初学者是一本有益的指导书。本书所附光盘包括:WebLogic Server 6.1的试用版、WebGain's VisualCafe 4.5的试用版、 WebGain's TopLink 3.5.1的...
EJB方面EJB方面EJB方面EJB方面EJB方面
EJB初学者的10大误区,学习EJB必知道的。EJB3.0的特性等等。喜欢的朋友下下看看。
ejb开发技术使用手册,初学者非常适合,内容详细,有案例,有重点,使用步骤明确!为ejb开发做了详细的步骤总结!
EJB3的三本好书之三,也很不错的一本ejb3的书籍,是英文版,附带源代码,这本书的好处是与Mastering EJB 3ed有一定的继承性,可以对比来看. 3本书的地址 1. Beginning EJB3 Application Development From Novice to ...
EJB集群资料EJB集群资料EJB集群资料EJB集群资料
EJB3课堂笔记,通俗易懂,很简洁,PDF格式
一个简单的Stateless Session Bean的例子,里面主要实现一个与时间有关的... 同时编写了一个客户端测试程序,展现的是一个简单的Stateless Session Bean的实现过程,希望能够对复杂的EJB的开发起一些抛砖引玉的作用。
期待已久的EJB3.0最终规范已经发布了。虽然EJB3.0 最终规范出来...本教程适合具有Java 语言基础的EJB初学者。有读者来邮件问需不需要先学EJB2.x,作者明确地告诉你不用学了。随着EJB3的发展,EJB2.x将会逐步成为历史。