中间件复习题及答案_精品文档.doc
《中间件复习题及答案_精品文档.doc》由会员分享,可在线阅读,更多相关《中间件复习题及答案_精品文档.doc(19页珍藏版)》请在冰豆网上搜索。
中间件复习题
中间件复习题
1.你认为什么是中间件?
中间件的主要作用是什么?
l定义:
中间件是介于应用系统和系统软件之间的一类软件,是位于操作系统和应用软件之间的一个软件层,向各种应用软件提供服务,使不同的应用进程能在屏蔽掉平台差异的情况下,通过网络互通信息。
l作用:
使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。
2.比较B/S结构与C/S结构的优缺点。
C/s 是客户机和服务器结构
B/S是浏览器和服务器结构
B/S:
优点:
1.具有分布性特点,业务处理方便;2.业务扩展简单方便;3.便于维护
缺点:
1.响应速度不及C/S结构;2.用户体验效果不够理想,需要单独界面设计
C/S:
优点:
1.客户端与服务器直接相连,响应速度快;2.C/S结构的管理信息系统具有较强的事务处理能力。
缺点:
1.客户端需要安装专用的客户端软件,工作量、维护成本较大;2.对客户端的操作系统有限制。
3.对客户端的操作系统一般也会有限制。
不适用于微软新的操作系统等等,Linux、Unix等。
3.ORB、对象适配器的作用分别是什么?
lORB:
是OMA参考模型的核心,是基于分布式对象构建应用程序的基础设施,保证了在异构平台上对象的互操作性与可移植性。
作用:
把客户发出的请求传递给目标对象,并把目标对象的执行结果返回给发出请求的客户。
由ORB提供的通信机制负责完成查找请求的对象实现,让对象实现准备好接收请求,传递构成请求的数据。
l对象适配器:
对象适配器是联系对象实现与ORB本身的纽带。
它的引入还大大减轻了ORB的任务,从而简化了ORB的设计。
作用:
管理服务器端伺服对象,对象标识,CORBA对象以及它们之间关联。
决定在收到一个客户请求时应调用哪一个伺服对象,然后调用该伺服对象上的合适操作。
对象适配器主要完成以下工作:
对象登记、对象引用(OR,ObjectReference)的产生、服务器进程的激活、对象的激活、对象的撤消、对象向上调用。
4.描述典型CORBA程序的开发实现过程(静态工作模式)。
5.什么是POA策略?
列举几种标准的POA策略并简要解释。
lPOA策略:
POA策略是一个对象,负责控制相关POA的行为及这些POA所管理的对象,使用POA前应仔细考虑应用程序所需的策略集。
l标准POA策略:
(选两种即可)
线程策略:
该策略指定POA使用的线程模型,它有两种取值:
ORB_CTRL_MODEL(缺省值):
表示由ORB负责将对POA的请求指派到线程。
在多线程环境中,并发请求可以用多线程传送。
SINGLE_THREAD_MODEL:
这时只有一个线程,POA顺序地处理请求。
对象标识指派策略:
该策略指定对象标识是由程序员编写的服务程序生成还是由POA自动生成,它可取以下值:
USER_ID:
由应用程序为POA的对象引用指定对象标识。
SYSTEM_ID(缺省值):
由POA为它的对象引用分配对象标识。
如果同时还采用了PERSISTENT策略,则在同一POA的所有实例中对象标识必须是唯一的。
对象标识唯一性策略:
该策略允许多个抽象对象共享一个伺服对象,它可取下列值:
UNIQUE_ID(缺省值):
被激活的伺服对象仅支持一个对象标识,POA不允许一个伺服对象与多个CORBA对象相关联。
MULTIPLE_ID:
被激活的伺服对象可以有一个或多个对象标识,在运行时刻调用伺服对象的操作时必须由操作内部决定对象标识。
生命期策略:
该策略指定POA中对象实现的使用期限,它可有以下值:
TRANSIENT(缺省值):
由POA创建的对象引用是瞬时的,这些对象在创建它的POA之外不可存在。
一旦POA被冻结为非活动状态,调用该POA创建的任何对象引用将引发OBJECT_NOT_EXIST异常。
对话型对象通常设计为瞬时对象。
PERSISTENT:
由POA创建的持久对象可在创建它的POA之外存在,因而使用这一策略通常还会同时采用USER_ID策略。
对持久对象的请求可能导致隐式地激活一个进程、一个POA以及实现该对象的伺服对象,这意味着POA应注册伺服对象定位器或激活器。
实体型对象通常设计为持久对象。
隐式激活策略:
该策略指定POA是否支持伺服对象的隐式激活,它可取以下值:
IMPLICIT_ACTIVATION:
POA支持隐式激活,服务程序可调用servant_to_reference操作或servant_to_id操作将伺服对象添加到活动对象映射表并转换为对象引用,也可调用伺服对象的_this方法激活伺服对象。
该值要求同时使用SYSTEM_ID和RETAIN策略。
NO_IMPLICIT_ACTIVATION(缺省值):
POA不支持伺服对象的隐式激活,只有通过显式的调用才可将伺服对象与一个对象标识相关联。
伺服对象保持策略:
该策略指定POA是否将活动伺服对象保存在活动对象映射表中,它有两种取值:
RETAIN(缺省值):
POA利用活动对象映射表跟踪对象的激活情况,通常与伺服对象激活器或POA显式激活方式结合使用。
NON_RETAIN:
POA不在活动对象映射表中保存活动的伺服对象,通常结合伺服对象定位器一起使用。
6.Corba客户端的静态和动态调用
(1)静态调用(SII)
静态调用借助于客户程序桩完成。
桩与框架在编译时创建并且在运行时不再改变,所以这些接口称为SII。
IDL桩负责客户程序的实现语言与ORB内核之间的映射。
客户程序开发者必须在程序编译之前就知道操作的名字和所有参数与返回值的类型,实际的操作名字、参数值和返回值是编写在应用程序的源代码中。
优缺点:
编程更容易-根据名字调用远程方法,将参数传递给方法,和本地方法调用相同。
更强的类型校验-编译程序时加强了类型校验。
执行良好-比动态方式快40倍左右
自编文档-通过阅读代码可以了解正在进行的东西。
不够灵活,用户在系统中添加新的对象服务时,客户程序必须改动源程序,重新编译,才能使用。
(2)CORBA支持两种用于动态调用的接口:
动态调用接口(DII)——支持客户方的动态请求调用。
动态框架接口(DSI)——支持服务方的动态对象调用。
1利用DII,客户方应用可以在运行时动态地向任何对象发出请求,而不象静态调用那样,必须在编译时就知道特定的目标对象的界面信息。
2使用DII时,用户必须手工构造请求信息,包括相应的操作及有关参数等。
3类似地,DSI允许用户在没有静态框架信息的条件下来获得对象实现。
4过程:
客户在运行时发现服务,获取接口,动态构造请求,从而使客户方调用该对象实现提供服务
优缺点:
客户端程序在编译的时候无法得知对象的详细信息,通过DII向远端对象发起调用
客户端可以通过DII中所含的标准的API动态的决定:
调用哪个对象,调用对象中的哪个操作,操作的参数是什么
可以在运行时动态向任何对象请求
用户必须手工构造请求信息,包括相应操作及有关参数
DII为客户端程序提供了“构建”和“发起”远端对象调用的能力
接口库提供了在运行时刻发现对象的能力。
没有接口库,就不会有真正的CORBA动态特性
7.简述基于POA实现的客户请求传递过程。
客户请求的传递过程:
l客户程序发出的请求中包含:
创建对象引用的POA名字、对象标识及目标机器与端口等信息
l如果目标POA不存在,ORB还允许调用适配器激活器创建所需的POA
l一旦请求被ORB传送到正确的机器与端口,监听该端口的POA管理器负责检查对象关键码(objectkey),对象关键码中含有POA名字与对象标识
lPOA管理器利用对象关键码将请求传送给正确的POA
lPOA利用对象关键码确定对象标识
l根据POA的策略集直接或间接地利用对象标识将请求传送到正确的伺服对象。
8.什么是IOC/DI,主要类型有哪些?
IOC:
控制反转即IoC(InversionofControl),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。
所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。
DI:
依赖注入(DependencyInjection):
组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。
9.EJB组件有哪几种?
其特点分别是什么?
lEJB组件:
会话bean(维护会话):
表示客户同应用之间进行的会话,是一种商业处理过程对象。
实体bean(处理事务):
代表商业过程中处理的永久性的数据。
消息驱动Beans(Message-drivenBeans):
结合了会话bean和JMS的消息监听器的特性,可异步接收JMS消息。
l特点:
会话bean(维护会话):
-运行在服务器端,其数据需要自己管理
-客户通过sessionbean上的方法来同应用的业务逻辑层上的组件进行交互
-Sessionbean是短暂的,且只有在与之关联的会话存在时才存在
-会话Bean代表的是调用它的客户程序所完成的工作,是商务过程对象。
-他们执行商务逻辑、商务规则、算法和工作流程,他们是包含商务逻辑过程的可重用组件。
实体bean:
-表示存储在永久性数据存储位置的业务数据,是持久的对象。
-与会话bean不同,实体bean不维护客户端状态
-实体bean实例映射到存储在关系数据库表中的一行数据
-实体bean每一个实例都具有唯一的标识(主键)
-更复杂的entitybean可以代表数据库表间关联视图。
-实体bean对象的存活时间与它们相关联的数据实体一样长,持续到它们表示的实体实际从永久性存储器中删除时对象
-与会话bean不同,实体可由多个客户共享
消息bean:
与其他BEAN区别
-不能由客户直接调用,由容器异步调用
-没有远程或本地接口
-类似于无状态的会话BEAN
10.RMI存根和框架的作用?
RMI存根和框架的作用:
lStub为客户端编码远程命令并把他们发送到服务器,等待服务器返回结果,stub再解码返回调用结果给客户端。
lSkeleton是把远程命令解码,调用服务端的远程对象的方法,把结果再编码发给stub。
11.比较JSP与Servlet。
1.两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程、OO),都可以使用Java强大的API。
2.两者工作方式相似:
JSP代码先被JSP容器转换为Servlet代码再编译为类。
3.两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。
4.都是Web服务器的功能扩展,Servlet创建动态页面;JSP可动态,静态创建页面
5.Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易。
12.简述什么是POA?
简述创建并激活POA的过程?
lPOA:
POA是对象实现与ORB其他组件之间的中介,它将客户请求传送到伺服对象,按需创建子POA,提供管理伺服对象的策略。
l创建:
利用create_POA()方法可以创建一个新的POA作为该POA的子POA,可以根据实际需要以这种方式创建多个子POA,从而形成一个POA层次(服务程序创建子POA只需提供子POA的名字,客户程序必须使用完整的POA名字指定一个子POA)
l激活:
对象引用通过对象标识与伺服对象建立关联。
如果POA采用RETAIN策略,可有三种激活方式:
显示激活,隐式激活,按需激活;若采用NON_RETAIN策略,对象只能按需激活。
13.简述ORM,为什么需要ORM?
概念:
对象关系映射,是一种程序技术,用于实现面