admin 管理员组

文章数量: 1184232


2024年3月12日发(作者:国内免费的数据可视化软件)

EJB常见面试题汇总

一、EJB是基于哪些技术实现的?并说出SessionBean和

EntityBean的区别,StatefulBean 和StatelessBean的区别。

1.EJB是一个用于分布式业务应用的标准服务器端组件模型,可

以在EJB服务器中运行。2。EJB包括Session Bean、Entity Bean、

Message Driven Bean,基于JNDI、RMI、JAT 等技术实现。

(1)SessionBean被用来实现一些业务逻辑操作,例如访问数据

库、调用其他EJB组件。(2)EntityBean被用来代表应用系统中用到

的数据.在EJB3.0中它仅仅作为普通JAVA对象来使用,它负责与数据

库进行对象关系映射。

(3)MDB主要被用来处理基于消息请求的组件,它能够异步接

收JMS消息,并能够与其他EJB交互。适用于一个业务执行时间很长,

但是又不需要实时地向用户反馈的场合。

3.Session Bean 还可以再细分为 Stateful Session Bean 与

Stateless Session Bean 。(1)无状态bean使用实例池技术来进行

管理,当EJB发布到应用服务器中时,EJB容器会预先创建一些Bean

实例放入实例池中,数量由服务器决定。每当来一个用户请求,EJB容

器就会从实例化池中取出一个EJB实例来为用户服务,当用户处理完

毕后,该实例又回到实例池中。这样用很少的Bean实例即可为不同的

用户来服务。但是EJB容器并没有为每个客户端分别维护相应的Bean

实例,有可能同一个Bean实例会为不同的客户端来使用。因此说它是

无状态的。

(2)EJB容器对有状态bean使用激活机制来进行管理。原理:

在EJB容器需要节省资源时,就从内存中收回Bean实例,将其所保持

的会话状态序列化到硬盘中,并且释放其所占有的内存。若此时客户

端对EJB再次发起请求,EJB容器会重新实例化一个Bean实例,并从

硬盘中将之前的状态恢复。

每个有状态Bean只服务于一个用户。有状态会话Bean必须实现

serializable接口。

从内存方面来看, Stateful Session Bean 与 Stateless Session

Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,

然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。

二.EJB的调用机制。

客户端与Session Bean交互,并不直接与Bean实例打交道,而

是经由Bean的远程接口或本地接口。当调用远程或本地接口的方法时,

接口使用的是存根(stub)对象。该存根实现了Session Bean的远程或

本地接口。它负责将方法调用经过网络发送到远程EJB容器或将请求

路由到位于本地JVM内的EJB容器。存根是在部署期间使用JDK自带

的/doc/,动

态生成。

三.EJB容器的事务。

事务分为:本地事务,全局事务。全局事务是通过JTA实现的。

(1)EJB容器提供了2种使用全局事务的方式:一是Bean管理

事务(BMT),二是容器管理事务(CMT)。默认情况下,Session

Bean和MDB都使用CMT。事务是在于客户端关联的业务方法执行前

开启,执行方法结束后关闭。如果方法内部抛出系统异常或需要回滚

的应用异常,事务就会回滚,否则就提交。

(2)CMT事务属性共有7种。

2、简要讲一下 EJB 的 7 个 Transaction Level?

3、EJB与JAVA BEAN的区别?

Java Bean 是可复用的组件,对Java Bean并没有严格的规范,

理论上讲,任何一个Java 类都可以是一个Bean。但通常情况下,由

于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具

有一个无参的构造器,另外,通常Java Bean还要实现Serializable 接

口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型

中的本地进程内COM 组件,它是不能被跨进程访问的。Enterprise

Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法

调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算

机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器


本文标签: 实例 事务 容器 使用 业务