重新排版一下,方便背诵
1.试列举常用的中间件类型。
答:
1、远程过程调用 中间件,即RPC。
2、面向对象 中间件,例如:RMI. RMI/IIOP, CORBA, EJB, DCOM等。
3、面向消息 中间件,例如:Java Message Service, IBM MQSeries, Web Services等。
4、基于事件 中间件。
2.基于RMI/IIOP的分布式应用开发步骤及请注意事项是什么?
答:(定义 - 实现 - 服务器 - 客户端 - 编译JAVA - 编译远程对象)
1)用JAVA 定义 远程接口
注意,远程接口要继承 java.rmi.Remote, 远程方法要抛出 java.rmi.RemoteException。
2)实现 远程接口
注意,实现 远程接口的类 必须继承 可移植远程对象 ,即 javax.rmi.PortableRemoteObject。
3)开发 服务器程序
4)开发 客户端程序
5)编译所有JAVA源代码
6)使用 rmic 编译 远程对象 实现的字节码文件,产生 客户端的码根 和 服务器端的框架
例如:rmic –iiop RMIIIOPApp.RemoteObjectImpl。
注意,rmic要使用 –iiop选项。
3.什么是无状态会话Bean?什么是有状态会话Bean?什么是实体Bean?它们的区别是什么?
答:(这个题的答案有点怪)
Session:一个用户连接到服务器,从连接起到断开止,称为一个会话,英语术语session。
无状态会话组件,不保存客户会话的痕迹,所以一个驻存在内存中的无状态会话组件对象可以服务多个客户。
当一个客户请求一个无状态会话组件对象时,如果在组件容器连接池中存在,那么就分配给该用户,否则,就创建一个新的对象。
有状态会话组件,记录会话期间,一个 客户和服务器端 数据交流的痕迹。
当一个客户申请一个有状态会话组件时,组件服务器就为这个用户创建一个唯一的有状态会话组件对象,其生命周期即为会话时间。
实体组件,严格地 对应 后台数据库中的一个 表单。
你可以把它视为一个内存数据库表单。一个存活实体组件对象与对应数据库表单数据的一致性,由组件容器维护。
4. 试说明以下EJB Java标注的意义:@Remote, @Stateless, @Stateful, @Entity, @EJB, @Id, @Column, @PersistenceContext, @Table, @NamedQuery。
答:
- @Remote 标注 远程
- @Stateless 标注 无状态会话组件
- @Stateful 标注 有状态会话组件
- @Entity 标注 实体组件
- @EJB 实体组件 注入机制标注
- @Id 标注 实体组件 所对应的数据库表单的主键
- @Column 标注 实体组件 某成员变量为对应表单的字段
- @PersitenceContext 利用JAVAPersistence机制导入实体组件标注
- @Table 标注 实体组件 对应的表单
- @NamedQuerry 标注 命名SQL查询语句
5、 什么是EJB的注入机制?
答:
EJB3.0采用 JAVA标注实体组件对象注入机制,大大地简化了基于J2EE数据库存编程。
所谓注入机制,
即当容器在一个 会话组件对象 内遇到 导入一个实体对象的标注 时,即时创建该 实体组件的一个 对象
旧版本的J2EE,程序员必须显式地创建一个实体组件对象。
6、试说明CORBA非同步方法的特点
答:
CORBA IDL非同步方法是一个
非阻塞,无返回,无异常抛出,以及无out和inout形式参数
的远程方法。
7、什么是WEB服务的定义语言?什么是WEB服务的网络协议?什么是WEB服务的命名目录服务器?
答:
- WEB服务的定义语言是WSDL,即Web Service Description Language,
XML大纲的命名空间为http://www.w3.org/TR/wsdl。 - WEB服务的网络协议是SOAP,即Simple Object Access Protocol,
SOAP命名空间为xmlns:s=http://www.w3.org/2001/06/soap-envelope。 - WEB服务的命名目录服务器是UDDI,即Universal Description, Discovery and Integration。
8、什么是big Web Service?
答:
基于SOAP、WSDL、UDDI等 XML技术的中间件体系结构 所构建的 WEB服务 称为大WEB服务。
9、什么是POA?它的作用是什么?
答:
POA, Portable Object Adapter。
即 可移植对象适配器对象 。
主要的作用有,管理 远程对象,远程方法参数的 打包和解包。
10、什么是J2EE容器?与EJB容器的关系是什么?试列举至少二种J2EE容器。
答:
- 所谓J2EE容器,是一种提供对象通讯、安全、对象生命周期、数据瞬时的一致性、软件构件的布署 等服务的支撑软件
- 包括WEB容器和EJB容器
- J2EE容器又叫J2EE应用服务器,例如JBOSS,GlassFish等都可用作J2EE容器。
11、在基于CORBA的中间件分布式应用开发中,一般先使用IDL定义接口。试说明in, out, inout三种远程方法的形式参数的差别。
答:
in 的 实际参数 从客户端 传递 到服务器端,
out 的 实际参数 在执行完 远程方法 后能 把数据从服务器端 带回 客户端,
inout 的 实际参数 把数据从客户端 带给 远程方法,又能把 远程方法执行的结果 带回客户端。
使用out形式参数,IDL接口中定义的操作 完全无需返回计算结果。
12、客户端的码根和服务器端的框架作用是什么?
答:
-
客户端的码根 是远程对象的 本地镜像,也就是远程对象的 本地代理
主要负责 远程方法 参数 打包 和 远程方法 调用返回结果 的解包 - 服务器端的框架 是服务器的码根
13、什么是CORBA?与RMI/IIOP的差别是什么?
答:
CORBA, Common Object Request Brocker Achitecture。
- 即 通用对象 请求代理 体系框架,是一种分布式中间件 规范。
- 和RMI/IIOP不同的地方:(定义远程接口的方式不同)
前者使用 IDL通用接口定义语言 定义 远程对象的接口,
而后者是纯粹的 JAVA分布式体系 ,使用 JAVA 定义远程接口。
- module org, jcorba映射成Java什么?
2.结构体映射成Java什么类型?
3.NPerson映射成Java什么类?作用是什么?
4.接口操作void display(out NPerson persons);被映射成Java什么方法?如何实现这个远程方法?
答:
- 1.package org.jcorba;
- 2.终极类 Person。
- 3.共生成两个类: NPersonHelper和NPersonHolder。
笼统地将,NPersonHelper类用于Corba的类型转换,
而NPersonHolder用于生成Corba的网络输入、输出流。 - 4.public void display(NPersonHolder persons);
构建一个Person对象数组,并赋予形式参数persons的公共成员变量 value。
15、如何在一个CORBA文件中定义一个一维某特定类型的动态数组?CORBA idl可变类型是什么?类似于VB中的什么类型?
答:
- 使用关键字 sequence。
例如,typedef sequence<Person> NPerson; NPerson就是Person对象的一维可变长的动态数组。 - CORBA idl可变类型是 any,
- 类似于VB中的 Variant 类型。
16、下面是一个Corba IDL文件:
答:
sequence<octet>被映射成Java字节数组,
而Data被映射成 DataHelper 和 DataHolder 两个类。
DataHolder类 的公共成员变量为一个变长的 字节数组。