件,而是通过其容器访问。EJB 容器是 EJB 组件的代理,EJB 组件由容器所创建和管理。客户
通过容器来访问真正的 EJB 组件。
EJB 包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立
一个 Bean 的实例时,EJB 容器不一定要创建一个新的 Bean 的实例供客户机调用,而是随便找
一个现有的实例提供给客户机。当客户机第一次调用一个 Stateful Session Bean 时,容器必须
立即在服务器中创建一个新的 Bean 实例,并关联到客户机上,以后此客户机调用 Stateful Ses
sion Bean 的方法时容器会把调用分派到与此客户机相关联的 Bean 实例。
EntityBean:Entity Beans 能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存
在,Entity beans 就一直存活。而不是按照应用程序或者服务进程来说的。即使 EJB 容器崩溃
了,Entity beans 也是存活的。Entity Beans 生命周期能够被容器或者 Beans 自己管理。
EJB 通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsys
tems 的 Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的 X
A 接口。
98、EJB 的角色和三个对象
答:一个完整的基于 EJB 的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商
提供,每个角色所作的工作必须遵循 Sun 公司提供的 EJB 规范,以保证彼此之间的兼容性。这
六个角色分别是 EJB 组件开发者(Enterprise Bean Provider) 、应用组合者(Application Ass
embler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供
者(EJB Container Provider)、系统管理员(System Administrator)
三个对象是 Remote(Local)接口、Home(LocalHome)接口,Bean 类
99、EJB 容器提供的服务
答:主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。
100、EJB 规范规定 EJB 中禁止的操作有哪些?
答:1.不能操作线程和线程 API(线程 API 指非线程对象的方法如 notify,wait 等),2.不能操作 a
wt,3.不能实现服务器功能,4.不能对静态属生存取,5.不能使用 IO 操作直接存取文件系统,6.
不能加载本地库.,7.不能将 this 作为变量和返回,8.不能循环调用。
101、remote 接口和 home 接口主要作用
答:remote 接口定义了业务方法,用于 EJB 客户端调用业务方法。
home 接口是 EJB 工厂用于创建和移除查找 EJB 实例
102、bean 实例的生命周期
答:对于 Stateless Session Bean、Entity Bean、Message Driven Bean 一般存在缓冲池管理,
而对于 Entity Bean 和 Statefull Session Bean 存在 Cache 管理,通常包含创建实例,设置上下
文、创建 EJB Object(create)、业务方法调用、remove 等过程,对于存在缓冲池管理的 Bea
n,在 create 之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在 C
ache 管理的 Bean 则通过激活和去激活机制保持 Bean 的状态并限制内存中实例数量。
103、EJB 的激活机制
答:以 Stateful Session Bean 为例:其 Cache 大小决定了内存中可以同时存在的 Bean 实例的
数量,根据 MRU 或 NRU 算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用
某个 EJB 实例业务方法时,如果对应 EJB Object 发现自己没有绑定对应的 Bean 实例则从其去
激活 Bean 存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的
ejbActive 和 ejbPassivate 方法。
104、EJB 的几种类型
答:会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean