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自带的www.doczj/doc/425424799.flect.Proxy动态生成。
三.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这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。
实例名词解释
31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,
容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB 容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。
EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems 的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA 接口。
79、客服端调用EJB对象的几个基本步骤
(1)设置JNDI服务工厂以及JNDI服务地址系统属性,初始化InitialContext。
(2)调用lookup()方法查EJB。
(3)调用remote或local接口的方法
13. webservice部分
4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL 解释。
Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。
JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。WSDL是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service
提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service 注册,以使别的企业能够发现的访问协议的实现标准。
88、CORBA是什么?用途是什么?
CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。其目的为:用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。