版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
******************J2EE程序设计复习题一、选择题EJB是:[B]服务器端产品服务器端组件开发架构C.特殊类型的JavaBeanD.用于实现商业逻辑EJB架构主要使用的设计模式是:[AC]Proxy代理StrategyDelegate委派ResponsibilityChainEJB的类型主要有:[CDF]CommandBeanDataAccessBeanSessionBeanEntityBeanJavaBeanMessage-DrivenBeanSessionBean的组成可以包括:[ACEFGI]HomeinterfaceAthreadclassRemoteinterfacePrimarykeyclassLocalhomeinterfaceLocalinterfaceejb-jar.xmlapplication.xmlBeanclassEntityBean的组成可以包括:[ACDEFGI]Homeinterfaceweb.xmlRemoteinterfacePrimarykeyclassLocalhomeinterfaceLocalinterfaceejb-jar.xmlejb.xmlBeanclassSessionBean按是否跟踪客户状态分:[BE]StateSessionBeanStatelessSessionBean有状态BMTSessionBeanCMTSessionBeanStatefulSessionBeanEntityBean根据数据持久性的处理方式分:BCBMTEntityBeanBMPEntityBeanCMPEntityBeanCMTEntityBeanEntityBean的事务处理方式可采用:CBMPBMTCMTCMPSessionBean和Message-DrivenBean的事务处理方式可采用:BBMT和CMPBMT和CMTBMP和CMPBMP和CMT申明方式的事务处理的属性有:ACDFGHSupportsShouldNotSupportedRequiredMaybeRequiresNewMandatoryNeverLocalinterface引入的目的是:BA.本地客户程序才能调用EJBB.为了性能C.解决SessionBean与EnityBean之间的交互12.对于SessionBean和EntityBean,为远程用户定义的homeinterface必须继承B,componentinterface必须继承D;为本地客户定义的homeinterface必须继承F,componentinterface必须继承A;SessionBean的beanclass必须实现C,EntityBean的beanclass必须实现。EA.EJBLocalObjectEJBHomeSessionBeanEJBOBjectEntityBeanEJBLocalHome.Message-DrivenBean的BeanClass必须实现BC;beanclass中服务方法的签名是A。onMessageMessageListenerMessageDrivenBean14.对于SessionBean和EntityBean,无论是remotehome或是localhome都必须定义create方法该方法都会抛出的异常是C,remotehome中create方法还会抛出异常B。EntityBean的homeinterface中findByPrimaryKey必须抛出异常A。FinderExceptionRemoteExceptionCreateExceptionSessionBean的homeinterface中可定义:Acreatemethod(s)Homemethod(s)findermethod(s)ejbSelectmethod(s)EntityBean的homeinterface中可定义:ACcreatemethod(s)Homemethod(s)findermethod(s)ejbSelectmethod(s)EJBContext是EJB与EJBContainer沟通的桥梁,在EJBContext中定义了与安全相关的两个方法是CE,与事务相关的三个方法是BFH,与EJB的组成相关的两个方法是AD,与定时服务相关的方法是G。getEJBLocalHomegetRollbackOnlygetCallerPrincipalgetEJBHomeisCallerInRolesetRollbackOnlygetTimerServicegetUserTransaction.有状态SessionBean的beanclass中实现了两个方法C和A用来完成状态的swapin/out。ejbActivate()ejbCreate()ejbPassivate()ejbLoad()ejbStore()ejbPostCreate().EntityBean的beanclass中实现了两个方法DE来同步内存与数据库的数据。ejbActivate()ejbCreate()ejbPassivate()ejbLoad()ejbStore()ejbPostCreate().EntityBean的homeinterface中的create方法会对应beanclass中的BF方法。ejbActivate()ejbCreate()ejbPassivate()ejbLoad()ejbStore()ejbPostCreate().在EntityBean的关系管理中,B关系需要casecadedelete(级连删除),A不能用级连删除。Aggregation聚合Composition组合22.在编写Message-DrivenBean的实践中,我们使用如下的编程努力来防止有毒消息的产生BC:A.用Container管理事务B.用Bean管理事务不抛出异常D.只抛出RuntimeException23.对DataSource的引用属于D,对TopicConnectionFactory的引用属于D,对Queue的引用属于B,远程客户访问EJB属于E,SessionBean往往通过JNDI查找EntityBean的LocalHome属于C。对基本数据类型的封装类型的对象通过JNDI获得使用A.EnvironmententryResourceenvironmentreferenceEJBlocalreferenceResourcereferenceEJBreference.在weblogic上可以部署的模块有BCD:JavabeanmoduleWebmoduleEnterpriseapplicationmoduleEJBmoduleResourceadaptermoudle.weblogic与EJB相关的部署描述文件有ABD:ejb-jar.xmlweblogic-ejb-jar.xmlweblogic.xmlweblogic-cmp-rdbms-jar.xml二、问答题1、什么是EJB?EnterpriseJavaBeans™(EJB™)是JavaEE™平台规范中定义的一种基于组件的分布式计算的架构,是面向事务、分布式的企业应用中的组件模型,用于对分布式企业应用中的业务逻辑进行封装。使用EJB技术编写的组件需要部署到EJB容器中才能运行。通过容器,应用服务器向EJB组件提供了多种底层系统服务,诸如事务控制、分布式服务、安全控制等,因此,使用EJB技术开发业务组件,可以提高应用的开发、维护的效率,同时,也将提高应用的可移植性及可靠性。应用开发人员可以更专注于特定的业务需求与模型。2、EJB的特征有哪些?包含处理企业数据的业务逻辑;EJB实例由容器在运行时创建及管理;可在部署时通过编辑环境项(envirnententr)定制EJB的行为;EJB的各种服务设置信息,如事务及安全属性,从EJB的类文件中分离出来。在部署和运行时,可通过工具对EJB的服务设置信息进行管理;EJB部署到EJB容器后,客户端才可通过EJB容器对EJB进行间接访问;EJB可使用任何EJB规范中指定可以使用的服务;EJB可以不经改动代码或重新编译,即可直接装配到一个新的应用中;当EJB被部署到不同的容器或服务器时,EJB开发者定义的客户视图(ientie不会发生改变。3、使用EJB组件模型的优势有哪些?服务器完成底层的复杂工作:应用开发人员关注于业务逻辑的实现而不是底层系统的实现机制;事务处理:服务器提供对EJB组件的事务控制服务,可以通过代码外的部署描述来设置组件事务处理级别;可扩展性:J组件可以根据应用的增长进行扩展;应用服务器还提供了负载均衡和失败恢复的特性,在保证系统可靠性的同时,增加系统的可扩展性;安全性:由应用服务器提供资源的访问权限控制。4、EJB2.0有哪些内容?分别用在什么场合?答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。jsp,Servlet,EJB,JNDI,JDBC,JMS...5、EJB组件模型的组成部分有哪些?一般,J组件由以下几个部分组成,即组件接口、ome接口、nterriee的W部署描述文件(eagedriven乖具有组件接口和ome接口)。6、简述EJB的组件接口客户端通过J的组件接口访问J对象,组件接口中定义了可被客户端访问的业务方法eagedriven不揖有组件接口)。组件接口分为远程接口和本地接口。J对象通过远程或本地接口,提供远程客户访问或本地客户访问的支持。提供远程接口的J拥有可被远程客户访问或本地客户访问的能力。对于提供了远程接口的对象,客户可通过标准的JavaI(emoteetodInvocation进行远程对象调用。提供本地接口的J只可被本地组件通过本地接口进行调用。所谓本地组件,即是运行于相同Java虚拟机中的本地J对象。本地调用通过一般的标准Java编程语言接口进行。J可以同时提供本地接口和远程接口,但一般只提供二者之一。7、简述EJB的HOME接口J规定了通过ome接口来提供客户端创建清除和在同种类型的J中查找特定J对象的方法eagedriven不包含ome接口)。对于提供远程接口的J,需要提供远程ome接口;提供本地接口的J,需要提供本地ome接口。ome接口由J开发人员编写远程ome接口必须扩展(etend)avaeJome接口;本地ome接口必须扩展(etend)avaeJ。接口。omeJ客户端通过标准的JNDI(JavaNamingandDirectoryInterface™)定位ome接口。J中,ome接口的功能由依赖注入以及可选的生命周期回调方法实现。J组件不再需要提供ome接口8、简述EJB的EnterpriseBean类nterriee类包含了组件的实现细节。nterriee^niJ开发人员编写,J规范中的nterrieeOn^,必须分别1J声明实现如下接口,avaeeioneanentity和eanjavax.ejb.MessageDrivenBean。符合EJB3.0规范的EnterpriseBean组件则不须实现以上接口,而使用@Stateful、@Stateless、@MessageDriven注解标记EJB类。9、EJB与JavaBean的区别?答:JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以JavaBean应具有一个无参的构造器,另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。JavaBean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。EnterpriseJavaBean相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。10、EJB的客户端有哪几种类型?EJB的客户端有以下几种类型:•运行于相同容器或其他容器中的EJB;•一般的Java类,如Java应用程序、applet、servlet;•非Java的客户环境,如非Java语言编写的CORBA客户。11、什么是JNDI?JNDI是TheJavaNamingandDirectoryInterface的缩写,使用JNDI可以访问命名和目录服务,即方便地查找远程或本地对象,是J2EE的核心技术之一,在JMS、JMail、JDBC、EJB等技术中得到广泛应用。JNDI是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得开发者可以用名称访问对象。目录服务是命名服务的自然扩展,两者之间的差别是目录服务中对象可以属性,而命名服务中对象没有属性。因此在目录服务中,可以根据属性搜索对象。JNDI允许访问文件系统中的文件,定位远程RMI注册的对象,访问LADP这样的目录服务,定位网络上的EJB组件等。12、简述JNDI架构JNDI架构提供了一组标准的独立于命名系统的API,有助于将应用与实际数据源分离。Java应用程序命名管理器JNDI的架构与JDBC的架构非常类似。JNDI架构提供一了组标准命名系统的API,包括如下5个包:javax.namingjavax.naming.directoryjavax.naming.eventjavax.naming.ldapjavax.naming.spi13、什么是SessionBean?SessionBean可被视为客户端程序在服务器上的部分逻辑延伸,每个SessionBean对象对应于特定的客户端,不能在多个客户端间共享。换句话说,SessionBean用于表示运行于服务器端的部分业务过程,作为客户端的代理,管理业务过程或任务,如客户对账户的借贷操作、汇率的计算,等等这些涉及逻辑、算法和工作流的种种任务。这些过程都是特定的客户行为,EJB根据这些过程在运行时创建过程实例、执行计算或者清除实例。14、简述SessionBean的生命周期相对于表示业务实体的EntityBean,SessionBean的生存时间要短,大致等于于一个客户端会话的延续时间。例如,客户通过浏览器,访问与SessionBean表示的相关业务过程,或通过一个Java应用程序或者是Applet访问的相关业务过程的持续时间或其它EnterpriseBean访问此业务过程的持续时间。SessionBean是非持久的,其状态不被保存到持久存储机制(如数据库、文件系统)中,尽管SessionBean本身可以执行对数据库的操作,但它并不是一种持久对象的表示。EnterpriseBean类必须实现的接口中,定义了EnterpriseBean类的一些容器用于管理实例的回调方法。这些回调方法被容器用于与组件进行交互,当容器执行与此Bean相关的一些重要操作时,通过调用这些方法通知组件。例如,用于容器在初始化或清除组件实例时,将调用这些方法中对应的管理回调方法。由于这些方法是由容器使用的,所以,组件中不应去调用这些方法(有状态会话bean的remove方法除外)。15、什么是无状态的SessionBean?无状态的SessionBean,会话状态只会在单个方法调用中被保持,一旦方法调用结束,组件将丢弃方法调用过程中保持的状态,不保持跨越方法调用的会话状态。由于无状态SessionBean不提供跨越方法调用的状态保持,因此,对于任何客户端调用,相同类别的SessionBean实例之间没有区别。例如,某个特定客户端对某个特定的无状态SessionBean实例的方法进行了调用后,此方法调用中的状态在调用完成后即被清除,对于后续的其他客户端方法调用而言,前一个是没有影响的。因此,无状态SessionBean通常被用于一些不需要保存跨越方法调用的会话状态的计算,如汇率的换算等较为简单的操作。由于具有这种会话状态无关的特性,无状态SessionBean通常可以在服务器启动时在实例池中创建并保持一些实例,为不同的客户端调用从实例池中分配已有的实例,免去频繁的创建、初始化和清除实例的动作。16、什么是有状态的SessionBean?***************对于有状态的SessionBean,在整个会话期间,特定组件实例将保持与某个特定客户端之间跨越方法调用的会话状态。不同于无状态的SessionBean,有状态SessionBean的实例只能对应于一个特定的客户端会话,不可在不同的客户端会话间共享,当新的会话开始,有状态的SessionBean实例即被创建和初始化,当会话结束,实例即被清除。因此,一般情况下,有状态的SessionBean所能提供的功能性,要强于无状态的SessionBean。17、什么是EntityBean?EntityBean用于表示保存在持久数据存储机制中的实体,为这些实体提供面向对象的视图,如关系型数据库中的业务实体数据,或传统业务系统中的业务实体。18、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。答:EJB包括SessionBean、EntityBean、MessageDrivenBean,基于JNDI、RMI、JAT等技术实现。SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。SessionBean还可以再细分为StatefulSessionBean与StatelessSessionBean,这两种的SessionBean都可以将系统逻辑放在method之中执行,不同的是StatefulSessionBean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的StatefulSessionBean的实体。StatelessSessionBean虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫StatelessSessionBean的时候,EJBContainer并不会找寻特定的StatelessSessionBean的实体来执行这个method。换言之,很可能数个使用者在执行某个StatelessSessionBean的methods时,会是同一个Bean的Instance在执行。从内存方面来看,StatefulSessionBean与StatelessSessionBean比较,StatefulSessionBean会消耗J2EEServer较多的内存,然而StatefulSessionBean的优势却在于他可以维持使用者的状态。19、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?SessionBean:StatelessSessionBean的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个StatefulSessionBean时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用StatefulSessionBean的方法时容器会把调用分派到与此客户机相关联的Bean实例。EntityBean:EntityBeans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entitybeans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entitybeans也是存活的。EntityBeans生命周期能够被容器或者Beans自己管理。EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),SunMicrosystems的TransactionService(JTS)、JavaTransactionAPI(JTA),开发组(X/Open)的XA接口。20、EJB的角色和三个对象答:一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提************************供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(EnterpriseBeanProvider)、应用组合者(ApplicationAssembler)、部署者(Deployer)、EJB服务器提供者(EJBServerProvider)、EJB容器提供者(EJBContainerProvider)、系统管理员(SystemAdministrator)三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类。21、简述容器管理持久性(Container-managedPersistence,CMP)容器管理持久性指由EJB容器处理EntityBean需要的对数据库的访问。使EntityBean可以脱离特定类型的数据库,从而具有更高的灵活性。为使EntityBean可以由EJB容器对持久性进行管理,需要提供EntityBean的抽象模式(abstractschema)信息。22、EJB组件模型的灵活性的哪些?EJB组件模型的灵活性表现在:EJB可作为表示无状态服务的对象;EJB可作为表示无状态服务的对象,可通过向指定的消息队列或主题发送JMS消息,以实现对此对象的异步调用;EJB可作为表示与特定客户的会话对象。此类对象在客户进行跨越方法的调用时,自动维持会话状态;EJB可作为表示业务对象的实体对象,在多个客户间共享;EJB可作为一个细粒度的持久对象,包含在一个粗粒度业务对象的持久状态中。通常,被远程访问的组件往往是粗粒度的业务对象,如订单、雇员纪录;细粒度的业务对象往往不会采用可远程访问的EJB组件模型,如订单中的采购项、雇员纪录中的地址,而是采用可本地访问的EJB组件模型或是作为EJB的附属类出现。23、何时使用EJB组件?下面是在使用EJB组件模型构建企业应用时,一些判断EJB组件模型是否适用的标准。EJB组件是构建分布式企业应用的组件模型技术;EJB组件规范是针对分布式企业应用制定的,是基于分布式对象技术的Java组件;日B组件不涉及表示层的内容,因此,必须与其他表示层技术一起使用;应用服务器提供了可以解决安全性、资源共享、持续运行、并行处理、事务完整性等复杂问题的服务,从而简化了商业应用系统。应用客户端类型的考虑;一般,企业应用开发都会有多种类型的客户端的需求,访问相同的数据或业务逻辑。如使用Web客户提供对应用的基于Internet的访问,使用应用客户端提应用基于Intranet的访问。EJB组件模型将业务逻辑与数据封装到EJB组件中,提供对多种客户端的支持。应用数据与业务逻辑的并发访问控制的考虑;企业应用通常需要提供数据或业务逻辑的并发访问能力,以此保证数据的完整性,由于EJB组件控制对后台数据的访问,并管理当前事务和数据库的内部锁定。节省了编写数据库控制逻辑的工作量,同时也保证了数据的一致性与正确性,从而降低了总编程量。全局事务控制的考虑;企业应用通常需要对不同的资源进行事务性的操作,如某个操作需要对数据库进行访问,同时可能需要通过JMS消息服务发送消息,或者,需要访问两个位于不同物理位置的异种数据库,这些操作必须在相同的事务环境中完成。基于访问控制的考虑;企业应用中往往需要对某些资源进行访问控制,如需要针对不同用户对组件方法调用设置访问控制策略,对访问特定Web资源的用户设置访问控制策略等。基于伸缩性的考虑;企业应用的用户规模往往成为影响企业应用开发难度的主要因素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论