java基础知识记录--EJB部分(摘自张孝祥整理java面试题)

本文介绍了EJB的实现技术,SessionBean与EntityBean的区别,以及它们的生命周期和事务管理。EJB基于JNDI、RMI、JAT等技术,SessionBean用于业务逻辑,EntityBean代表持久性数据。EJB与Java Bean的主要区别在于EJB可被远程访问,且必须部署在容器中。EJB容器提供生命周期管理、事务管理等服务,而EJB的激活机制涉及状态管理和并发控制。
摘要由CSDN通过智能技术生成

一、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别

      EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现的。

      SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。

      对于客户机,SessionBean是一种非持久性对象,它实现某些服务器上运行的业务逻辑。

      对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。

      Session Bean还可以细分为Stateful Session Bean与Stateless Session Bean,这两种的Session Bean都可以将系统逻辑放在method之中执行,不同的是stateful  Session Bean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的stateful session bean的实体。stateless session bean虽然也是逻辑组件,但是他去不负责记录使用者的状态,也就是说当使用者呼叫stateless session bean的时候,EJB Container并不会寻找特定的stateless session bean的实体来执行这个method。换言之,很可能数个使用者在执行某个stateless session bean的methods时,会是同一个Bean的Instance在执行。从内存方面来看,stateful session bean与stateless session bean比较,stateful session bean会消耗J2EE server较多的内存,然而stateful session bean的优势在于它可以维持使用者得状态。

二、EJB与JAVABEAN的区别:

      Java Bean 是可复用的组件,对java bean并没有严格的规范,理论上讲,任何一个java类都可以是一个bean。但通常情况下,由于java bean是被容器所创建的,所以java bean应具有一个无参的构造器,另外,通常java bean还要实现Serializable接口用于实现bean的持久性。java bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。EJB相当于DCOM,即分布式组件。它是基于java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被部署在诸如websphere、weblogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件有容器所创建和管理。客户通过容器来访问真正的EJB组件。

三、EJB包括(SessionBean,EntityBean)说出他们的生命周期,以及如何管理事务的?

      SessionBean:stateless sesion bean的生命周期是由容器决定的,当客户机发出请求要建立一个bean的实例时,EJB容器不一定要创建一个新的bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一调用一个stateful session bean时,容器必须立即在服务器中创建一个新的bean实例,并关联到客户机上,以后此客户机调用stateful session bean 的方法时容器会把调用分派到此客户机相关联的bean实例。

      EntityBean:EntityBean能存活 相对较长的时间,并且状态是持续的。只要数据库中的数据存在,EntityBeans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,entity bean也是存活的。entity bean生命周期能够被容器或者Beans自己管理。

     EJB通过以下技术管理事务:对象管理组织(OMG)的对象事务服务(OTS),Sun Microsystems的Transacton Service(JTS)Java Transaction API(JTA),开发组(X/Open)的XA接口。

四、EJB容器提供的服务:

      主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发性管理等服务。

五、EJB的激活机制

      以Stateful Session Bean为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive和ejbPassivate方法。

六、EJB的几种类型

      会话(Session)Bean,实体(Entity)Bean、消息驱动的(Message Drived)Bean

      会话Bean又可分为有状态(stateful)和无状态(stateless)两种

      实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种。

七、客户端调用EJB对象的几个基本步骤:

      设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用Create方法创建Remote接口,通过Remote接口调用其他业务方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值