1. 你认为什么是中间件?中间件的主要作用是什么?
定义:中间件是介于应用系统和系统软件之间的一类软件,是位于操作系 统和应用软件之间的一个软件层,向各种应用软件提供服务,使不同的应用进程能在屏蔽掉平台差异的情况下,通过网络互通信息。
作用:使用系统软件所提供的基础服务(功能),衔接网络上应用系统的 各个部分或不同的应用,能够达到资源共享、功能共享的目的。
2. 比较B/S结构与C/S结构的优缺点。
B/S结构的优点:
1.具有分布性特点,可以随时随地进行查询、浏览等业务处理。
2.业务扩展简单方便,通过增加页面即可增加服务器功能。
3.维护简单方便,只需要改变网面,即可实现所有用户的同步更新。
4.共享性强
B/S 结构的缺点:
1.响应速度不及C/S,随着AJAX技术的发展,相比传统B/S结构软件提升一倍速度。
2.用户体验效果不是很理想,B/S需要单独界面设计,厂商之间的界面也是千差万别,由于浏览器刷新机制,使用时有刷屏现象,好在AJAX技术解决这一难题
C/S 结构的优点:
1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度较快。
2.C/S结构的管理信息系统具有较强的事务处理能力。
C/S 结构的缺点:
1.只适用于局域网(现在很多CRM软件也可适用于外网)。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
2.客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
3.对客户端的操作系统一般也会有限制。不适用于微软新的操作系统等等,Linux、Unix等。
3. ORB、对象适配器的作用分别是什么?
ORB:是OMA参考模型的核心,提供了最基本的通信枢纽设施(分布式对 象之间透明的地发送请求或接收响应的基本机制),独立于实现对象的特定平台与技术,是基于分布式对象构建应用程序的基础设施,保证了在异构平台上对象的互操作性与可移植性。
作用:解释客户端的调用并且负责找到一个实现该请求的对象,把请求参数传递给该对象,调用它的方法最好返回结果。
对象适配器:对象适配器是联系对象实现与ORB本身的纽带。它的引入还大大减轻了ORB的任务,从而简化了ORB的设计。
作用:管理服务器端伺服对象,对象标识,CORBA对象以及它们之间关联。决定在收到一个客户请求时应调用哪一个伺服对象,然后调用该伺服对象上的合适操作。对象适配器主要完成以下工作:对象登记、对象引用(OR, Object Reference)的产生、服务器进程的激活、对象的激活、对象的撤消、对象向上调用。
4. 描述典型CORBA程序的开发实现过程(静态工作模式)。
静态工作方式:
一个典型CORBA应用的实现过程:
5. 什么是POA策略?列举几种标准的POA策略并简要解释。
POA策略:POA策略是一个对象,负责控制相关POA的行为及这些POA所
管理的对象,使用POA前应仔细考虑应用程序所需的策略集。
标准POA策略:
线程策略:该策略指定POA使用的线程模型
对象标识唯一性策略:该策略允许多个抽象对象共享一个伺服对象
生命期策略:该策略指定POA中对象实现的使用期限
对象标识指派策略:该策略指定对象标识是由程序员编写的应用程序生成还是由POA自动生成
请求处理策略:指定POA如何处理请求
隐式激活策略:指定POA是否支持服务对象的隐式激活
6. 消息发送的模式有哪些?
同步方式:客户端以同步通信方式发出一个请求后将控制权交给ORB,然
后在请求完成(既可能成功并返回结果也可能失败并引发异常)之前一直等待。
延迟同步通信:客户端发出一个延迟同步方式的请求之后,将继续执行
任务而不是等待请求处理结束,然后以空闲的时间以非阻塞的轮询方式检查请求是否处理完毕。
7. 简述基于POA实现的客户请求传递过程。
- 客户程序发出的请求中包含:创建对象引用的POA名字、对象标识及目标
机器与端口等信息 - 如果目标POA不存在,ORB还允许调用适配器激活器创建所需的POA
- 一旦请求被ORB传送到正确的机器与端口,监听该端口的POA管理器负责检查对象关键码(object key),对象关键码中含有POA名字与对象标识
- POA管理器利用对象关键码将请求传送给正确的POA
- POA利用对象关键码确定对象标识
- 根据POA的策略集直接或间接地利用对象标识将请求传送到正确的伺服
对象。
8. 什么是消息中间件? 和PRC的比较,并描述一种消息中间件的应用场景。
消息中间件:应用间通过传递消息来进行协作,是一种异步通信模式。主
要功能是在不同的网络协议、不同的操作系统和不同的应用程序之间提供可靠的和可恢复的(若发生意外)消息传送。
RPC调用的缺点:
(1)客户端与服务器端需要同时在线;
(2)客户端需要知道服务器端的调用接口,若调用接口发生改变,客户端需要做相应变化,如通过ODBC连接访问数据库,客户端需要知道远程数据库的类型,若类型发生改变,还需要重新装载相应的驱动程序。
(3)操作过程中需要一直保持与服务器端的连接,直到操作结束。
消息中间件工作原理:
- 应用之间以一系列消息的方式进行通信。
- 在消息传递过程中,为了避免消息被丢失,消息被保存在消息队列中。 -应用把消息发送到与接收者有关的队列中。消息传递机制保证将消息传送到目的地且只传送一次。
- 在消息传递过程中,应用之间不必建立联系,发送者仅需将消息放入到与接收者有关的队列中,而不必关心接收者是否在线。 -接收者仅需从自己的队列中提取消息即可。
9. EJB组件有哪几种?其特点分别是什么?
EJB组件:
- 会话bean(维护会话):表示客户同应用之间进行的会话,是一种商业处理过程对象。
- 实体bean(处理事务):代表商业过程中处理的永久性的数据。
- 消息驱动Beans(Message-driven Beans):结合了会话bean 和 JMS的消息监听器的特性, 可异步接收JMS 消息。
特点:
会话bean(维护会话):
- 运行在服务器端,其数据需要自己管理
- 客户通过session bean上的方法来同应用的业务逻辑层上的组件进行交互
- Session bean是短暂的,且只有在与之关联的会话存在时才存在
- 会话Bean代表的是调用它的客户程序所完成的工作,是商务过程对象。
- 他们执行商务逻辑、商务规则、算法和工作流程,他们是包含商务逻辑过程的可重用组件。
实体bean:
- 表示存储在永久性数据存储位置的业务数据,是持久的对象。
- 与会话bean不同,实体bean不维护客户端状态
- 实体bean实例映射到存储在关系数据库表中的一行数据
- 实体bean每一个实例都具有唯一的标识(主键)
- 更复杂的entity bean可以代表数据库表间关联视图。
- 实体bean对象的存活时间与它们相关联的数据实体一样长,持续到它们表示的实体实际从永久性存储器中删除时对象
- 与会话bean不同,实体可由多个客户共享
消息bean:
与其他BEAN区别
- 不能由客户直接调用,由容器异步调用
- 没有远程或本地接口
- 类似于无状态的会话BEAN
10. RMI存根和框架的作用?
RMI存根和框架的作用:
Stub:存在于客户端,是远程对象的本地映象,在调用远程对象时,实际调用的是存根对象上的方法。其负责:初始化并与远程对象所在的远程VM连接然后将参数打包,传递到远程VM等待方法调用的结果解包返回值和异常将值返回给调用者
Skeleton:存在于服务器,接收客户存根的请求和真正的远程对象进行交互用于传送服务器响应到客户负责:解包客户端输入的远程方法的参数调用实际的远程对象的方法将结果打包返回给调用者传至远程引用层
11.比较JSP与Servlet
- 两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程、OO ),都可以使用Java强大的API。
- 两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类。
- 两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。
- 都是Web服务器的功能扩展,Servlet创建动态页面;JSP可动态,静态创建页面
- Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易
12.简述什么是POA?简述创建并激活POA的过程?
POA:POA是对象实现与ORB其他组件之间的中介,它将客户请求传送到
伺服对象,按需创建子POA,提供管理伺服对象的策略。
创建:利用create_POA()方法可以创建一个新的POA作为该POA的子POA, 可以根据实际需要以这种方式创建多个子POA,从而形成一个POA层次(服务程序创建子POA只需提供子POA的名字,客户程序必须使用完整的POA名字指定一个子POA)
激活:对象引用通过对象标识与伺服对象建立关联。如果POA采用RETAIN策略,可有三种激活方式:显示激活,隐式激活,按需激活;若采用NON_RETAIN策略,对象只能按需激活。
13.简述什么是值类型?值类型的作用和典型用法是什么?
值类型:一种由类型的实际值表示的数据类型。
实质:一个对象的目的是为了封装数据,或一个APP需要显式地对某一对
象进行复制,该对象应使用IDL值类型而不是接口类型,此时的对象实例称为“值”。
作用:在网络中传递对象状态信息,即为了实现按值传递对象。
典型用法:
- 按值调用传递参数时创建实参的副本
- 远程操作返回一个对象时创建返回结果的副本
14.现代应用系统的主要特征是什么?
分布:任务已不只是在单机上运行,而是由网络中多台计算机上的相关应用共同协作完成,需考虑网络传输、数据安全、数据一致性、同步等诸多问题
异构:计算机硬件、操作系统、网络协议、数据库系统以及开发工具种类
繁多,需考虑数据表示、调用接口、处理方式等诸多问题
动态协作:参与协作的应用允许位置透明性、迁移透明性、负载平衡性等
需求。
15.2层和3层系统的特点是什么?
2层结构存在很多缺陷:
- 客户端的负担仍比较重:仍然需要客户端进行较复杂的数据处理
- 客户端的可移植性不好:处理复杂必然牵涉更多的移植性问题; 每个客户端上都要安装数据库驱动程序
- 系统的可维护性不好:客户端包含过多的商业逻辑;商业逻辑与人机交互界面交织在一起
- 数据的安全性
3层结构的优点:
除了更合理的分配任务外,3层结构还具有如下优点:
- 将业务逻辑放置在中间层可以提高系统的性能,使中间层的业务逻辑处理与数据层的业务数据紧密结合在一起,而无需考虑客户的具体位置。
- 添加新的中间层服务器能够满足新增客户机的需求,可以大大提高3层系统的可伸缩性。
- 将业务逻辑从客户端移到中间层,在客户层的应用程序与数据层的数据库之间增加了一层,这样客户端的应用程序可以独立于数据层的数据库。
- 将业务逻辑致于中间层,从而使业务逻辑集中到一处。而在2层方式下,业务逻辑被分散到所有的客户机上(除非使用存储过程)。这样做是不可取的,因为业务规则是动态变化的,而对于这些业务而言,规范又是强制性的,所以,将业务逻辑分散到整个客户层的客户机上会使实施过程变得非常困难。
- 大量的中间层中间件平台提供丰富的系统级服务,使得开发人员可以以更少的工作量开发出更复杂、可靠、高效的软件系统。
16.什么是SOAP? 有什么特点?可采用的底层传输协议有哪些?
SOAP:SOAP是在松散的、分布的环境中使用XML交换结构化的和类型化
的信息的一种简单协议。
特点:SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,
它只定义了一种简单的以模块化的方式包装数据的机制。
可采用的底层传输协议:SOAP没有定义任何底层的传输协议。可以使用
HTTP、FTP、SMTP或者JMS,甚至是自定义协议来传输SOAP报文。一般使用HTTP协议。
从某种意义上讲,SOAP可以简单理解为:HTTP+XML+RPC
HTTP作为底层通信协议
RPC作为一致性的调用途径
XML作为数据传输的格式
17.EJB组件各接口的含义和作用。
会话和实体bean提供接口,消息bean不提供
Home接口:Home接口定义一组方法来创建新的EJB对象,查找、定位和
清除已有的EJB对象。
Remote接口:EJB对象的Remote接口定义EJB构件中提供的可供用户调
用的方法,也就是通常所说的实现商业逻辑的函数或过程(如计算商品价格的函数),以供远程客户端调用。
18.Servelet的执行过程?最常使用的接口有什么?
Servelet的执行过程:
1.加载,实例化和初始化servlet:
容器首先判断servlet的实例是否存在,若不存在,则容器加载该servlet,并从该servlet类创建实例.接着,容器调用init方法对该servlet实例进行初始化
2.调用该servlet的service方法:
假定该servlet实例存在,且已进行了初始化.则容器调用service方法,用其将一个请求对象和一个响应对象传给该servlet
3.清除servlet的响应,将控制权返回给web服务器:
Servlet处理了请求后,响应被交给容器。在容器将控制权返回给web服务器前,会将响应清除,然后由web服务器将该响应传送给客户
接口:Servlet对应的服务方法,有doGet, doPost等
20.Corba服务器端程序的解释,每一行程序的作用
21.J2EE中容器的作用
- J2EE服务器:是J2EE产品的运行部分。一个J2EE服务器提供EJB容器和
Web容器。 - Enterprise JavaBeans(EJB)容器:管理J2EE应用程序的enterprise bean
的执行。Enterprise bean和它的容器运行在J2EE服务器中。 - Web容器:管理J2EE应用程序的JSP和Servlet组件的执行。Web组件和它
的容器也运行在J2EE服务器中。 - 客户端应用程序容器:管理应用程序客户端组件的运行。
- Applet容器:管理applet的执行。由运行在客户端的一个Web浏览器和Java插件一同组成。
22.实体bean与会话bean差别?
23.什么是UDDI、WSDL?
UDDI(Universal Description, Discovery and Integration):是一套
基于Web的Web Service注册中心的实现标准规范。(注册中心维护了一个Web Service的全球目录,其中的信息描述格式是基于通用的XML格式的。) 包含注册Web Service和发现Web Service的访问协议的实现标准。WSDL(Web Service Description Language):是采用XML语言来描述Web Service的属性的语言,WSDL文档可以包含以下内容: What:Web Service做什么,Where:Web Service位于哪里,How:怎样调用。如果将Web Service作为一个分布式对象来看,WSDL就是Web Service的接口描述语言(IDL)。WSDL定义了一套基于XML的语法,将Web Service描述为能够进行消息交换的服务访问点的集合。
24.CORBA对象和伺服对象的关系。
CORBA对象与具体的伺服对象是两个不同抽象层次的概念:它们之间的彻
底分离使得CORBA独立于任何特定程序设计语言,并为服务端程序的可移植性打下基础。对象适配器是一个重要的ORB组件,它负责将抽象的CORBA对象映射到具体的伺服对象。
CORBA对象可看作是一个具有对象标识、对象接口及对象实现的抽象实
体。之所以称为抽象的,是因为并没有硬性规定CORBA对象的实现机制。由于独立于程序设计语言和特定ORB产品,一个CORBA对象的引用又称可互操作的对象引用(Interoperable Object Reference)。从客户程序的角度看,IOR中包含了对象的标识、接口类型及其他信息以查找对象实现。
伺服对象(servant)是指具体程序设计语言的对象或实体,通常存在于
一个服务程序进程之中。客户程序通过对象引用发出的请求经过ORB担当中介角色,转换为对特定的伺服对象的调用。在一个CORBA对象的生命期中,它可能与多个伺服对象相关联,因而对该对象的请求可能被发送到不同的伺服对象。
伺服对象通过对象标识关联到CORBA对象。
25. CORBA客户端的静态调用和动态调用
静态调用(SII):客户程序在编译前就知道IDL接口信息
静态调用的优缺点:
- 编程更容易
- 更强的类型校验
- 执行快速
- 自编代码,阅读代码就可以理解在运行的东西
- 不够灵活
动态调用:编写客户程序时尚未确定IDL接口类型,运行时利用接口
库服务提供的信息创建一个请求对象,大部分任务是建立请求对象,而不是调用过程本身。
动态调用的优缺点:
更加灵活但是比静态调用慢
26. 简述开发无状态的会话EJB 构件中的Remote 接口,Home 接口,Enterprise Bean 类的具体实现功能。
- 定义 Remote 接口
Remote 接口包含EJB 构件实现的商业方法的声明,客户端只能通过remote 接口访问构件实现的商业方法,不能直接调用。 - 定义 Home 接口
Home 接口中包含EJB 构件生命周期管理的相关方法,客户程序使用Home Interface 创建、查找或删除EJB 的实例。 - 定义 Enterprise Bean 类
在 EJB 中,remote 接口中所定义的商业方法由Enterprise Bean 类实现,定义好Remote接口和Home 接口后,就可以定义相关的Enterprise Bean 类。Enterprise Bean 类首先要按照Remote 接口的约定实现商业方法getCurTime,其次要实现Home 接口中create 方法对应的ejbCreate 方法与会话构件生命周期相关的方法。
27. J2EE 规范将应用系统从开发到布署维护的生命周期映射到了6 个角色:
- J2EE 平台提供者(J2EE Product Provider)
- 工具提供者(Tool Provider)
- 应用构件提供者(Application Component Provider)
- 应用组装者(Application Assembler)
- 布署者(Deployer)
- 系统管理员(System Administrator
28.JavaEE(即J2EE)是什么
JavaEE 是建立在Java2平台上的企业级应用的解决方案,是Sun公司提出的一个标准,成为一个支持企业级应用开发的体系结构
29.什么是IOC/DI,主要类型有哪些?
IOC,控制反转,是由容器来管理对象之间的依赖关系。将原本由程序负责的组件装配权交给容器,增强开发灵活性
DI,依赖注入,组件只提供普通的Java方法,成员变量的值由外部程序来定
主要的类型有:
构造器注入
设值注入
接口注入
30.Struts框架各组件的作用
Struts是MVC模式的一种实现,构建程序框架结构
控制层组成:actionservlet和action
actionservlet接受用户的输入并调用模型和视图完成用户的需求,action类负责调用模型的方法,更新模型的状态,控制流程
视图组成:jsp和actionform bean
视图是用户看到并与之交互的界面
模型部分组成:Javabean 和EJB
模型是应用程序的主体部分,模型表示业务数据和业务逻辑
31.什么是MVC模式
是model-view-controler的缩写,一种软件设计典范
model:包含应用程序的核心功能,封装了应用程序的状态。
view:视图提供模型的表示。它是应用程序的外观
controler:控制应用程序对用户的输入
31.什么是会话bean,会话bean的子类型有哪些?分别的应用场景
session bean(会话bean)是非持久的bean,封装业务逻辑,可以被本地、远程、web service客户端以编程形式调用
分三类:
- 有状态session bean
bean的状态代表着和一个特定客户端的交互 - 无状态session bean
不针对特定客户端保存数据,为所有客户端提供公共服务 - 单例session bean
单例session可以被多线程并发访问,状态全局共享,在应用启动和关闭时执行
Rails 创建应用的基本过程
- 创建项目
- 配置数据库
- 建立控制器
- 修改路由和资源
- 命令创建模型
- 编写控制器代码和模型代码
- rails运行程序
COM+比COM的优点是什么?
- 把COM、DCOM和MTS的编程模型结合起来,继承了他们大部分特性的同时又增添了新的功能。
- 利用COM+开发要比COM轻松容易
- 与COM相比较,COM+与Windows操作系统结合得更为紧密,集成了很多底层繁琐的工作。