武汉理工中间件复习题.docx
- 文档编号:5089237
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:14
- 大小:135.92KB
武汉理工中间件复习题.docx
《武汉理工中间件复习题.docx》由会员分享,可在线阅读,更多相关《武汉理工中间件复习题.docx(14页珍藏版)》请在冰豆网上搜索。
武汉理工中间件复习题
软件11级中间件复习题参考答案
二、问答题
a)什么是RMI?
与RMI/IIOP的差别是什么?
RMI,RemoteMethodInvocztion,即远程方法调用。
和RMI/IIOP相同的地方是两种方法都使用JAVA创建远程对象的接口,而两者使用的网络协议有所不同。
后者使用CORBA规范的通用协议IIOP,所以可以和CORBA应用通讯。
换句话说,一个CORBA客户端可以访问一个RMI/IIOP服务器。
b)什么是CORBA?
与RMI/IIOP的差别是什么?
CORBA,CommonObjectRequestBrockerAchitecture。
即通用对象请求代理体系框架,是一种分布式中间件规范。
和RMI/IIOP不同的地方,前者使用IDL通用接口定义语言定义远程对象的接口,而后者是纯粹的JAVA分布式体系,使用JAVA定义远程接口。
c)CORBA体系结构的中间件是什么?
CORBA体系结构的中间件是ORB,即对象请求代理
d)客户端的码根和服务器端的框架作用是什么?
客户端的码根和服务器端的框架作用是什么?
客户端的码根是远程对象的本地镜像,也就是远程对象的本地代理,主要负责远程方法参数打包和远程方法调用返回结果的解包。
服务器端的框架是服务器的码根。
e)试列举常用的中间件类型。
1、远程过程调用中间件,即RPC。
2、面向对象中间件,例如:
RMI.RMI/IIOP,CORBA,EJB,DCOM等。
3、面向消息中间件,例如:
JavaMessageService,IBMMQSeries,WebServices等。
4、基于事件中间件。
f)基于RMI/IIOP的分布式应用开发步骤及请注意事项是什么?
1、用JAVA定义远程接口。
注意,远程接口要继承java.rmi.Remote,远程方法要抛出java.rmi.RemoteException。
2、实现远程接口。
注意,实现远程接口的类必须继承可移植远程对象,即javax.rmi.PortableRemoteObject。
3、开发服务器程序。
4、开发客户端程序。
5、编译所有JAVA源代码。
6、使用rmic编译远程对象实现的字节码文件,产生客户端的码根和服务器端的框架。
例如:
rmic–iiopRMIIIOPApp.RemoteObjectImpl。
注意,rmic要使用–iiop选项。
g)基于JavaCORBA的分布式应用开发步骤及请注意事项是什么?
1、使用IDL接口定义语言定义远程接口。
2、使用jdk1.6的idlj编译接口定义文件。
注意:
idlj的选项是-fall。
3、实现远程接口。
注意:
实现远程接口的类必须继承服务器端的POA对象。
4、实现服务器程序。
5、实现客户端程序。
h)什么是POA?
它的作用是什么?
POA,PortableObjectAdapter。
即可移植对象适配器对象。
主要的作用有,管理远程对象,远程方法参数的打包和解包。
i)试画出基于JDBC-ODBC桥的数据库应用各模块之间关系示意图。
j)什么是J2EE容器?
与EJB容器的关系是什么?
试列举至少二种J2EE容器。
所谓J2EE容器,是一种提供象通讯、安全、对象生命周期、数据瞬时的一致性、软件构件
的布署等服务的支撑软件,包括WEB容器和EJB容器。
J2EE容器又叫J2EE应用服务器,
例如JBOSS,GlassFish等都可用作J2EE容器
k)什么是无状态会话Bean?
什么是有状态会话Bean?
什么是实体Bean?
它们的区别是什么?
一个用户连接到服务器,从连接起到断开止,称为一个会话,英语术语session。
有状态会话组件,记录会话期间,一个客户和服务器端数据交流的痕迹。
当一个客户申请一个有状态会话组件时,组件服务器就为这个用户创建一个唯一的有状态会话组件对象,其生命周期即为会话时间。
而无状态会话组件,不保存客户会话的痕迹,所以一个驻存在内存中的无状态会话组件对象可以服务多个客户。
当一个客户请求一个无状态会话组件对象时,如果在组件容器连接池中存在,那么就分配给该用户,否则,就创建一个新的对象。
实体组件严格地对应后台数据库中的一个表单。
你可以把它视为一个内存数据库表单。
一个存活实体组件对象与对应数据库表单数据的一致性,由组件容器维护。
l)什么是EJB的注入机制?
EJB3.0采用JAVA标注实体组件对象注入机制,大大地简化了基于J2EE数据库存编程。
所谓注入机制,即当容器在一个会话组件对象内遇到导入一个实体对象的标注时,即时创建该实体组件的一个对象。
旧版本的J2EE,程序员必须显式地创建一个实体组件对象。
m)什么是SSSB的管理池?
(poolingSatelessSessionBeans)
见k>
n)什么是EJB的JavaPersistence技术?
见k>
o)试说明以下EJBJava标注的意义:
@Remote,@Stateless,@Stateful,@Entity,@EJB,@Id,@Column,@PersistenceContext,@Table,@NamedQuery。
1)@Remote标注远程
2)@Stateless标注无状态会话组件
3)@Stateful标注有状态会话组件
4)@Entity标注实体组件
5)@EJB实体组件注入机制标注
6)@PersitenceContext利用JAVAPersistence机制导入实体组件标注
7)@Id标注实体组件所对应的数据库表单的主键
8)@Column标注实体组件某成员变量为对应表单的字段
9)@Table标注实体组件对应的表单
10)@NamedQuerry标注命名SQL查询语句
综合题
三、基于J2EE的B/S分布式代数方程求解系统(既考试综合题)
问题:
(一)、简述基于J2EE的B/S分布式代数方程求解系统的开发原理
利用无状态会话组件表示代数方程求解的业务逻辑。
编写二个服务器端小程序S1和S2。
ServletS1用于显示输入代数方程三个系数的HTML表单(Form),表单的Method属性设置为Post,而其Action指向ServletS2。
服务器端小程序S2,利用J2EE的注入机制,跨容器地创建无状态会话组件的一个实例作为其成员,从而调用其远程接口所呈现的求解代数方程的远程方法。
支持J2EE的应用服务器GlashFish包括EJB容器和WEB容器,后者为支持Servlet和JSP的WEB服务器,例如ApacheTomecat。
跨容器数据交流由应用服务器支撑。
这个应用程序的客户端,正如其名子所示,是浏览器。
服务器端小程序S2承担三个主要任务:
一是提取S1所提交的三个系数,由其Request对象完成,二是利用J2EE注入机制创建无状态会话组件的一个实例并调用其远程方法,三是利用Response对角获取一个输出流对象,把代数方程求解的结果以HTML格式显示给客户端。
WEB服务器当首次收到一个请求Servlet时,如果该服务器小程序已经被编译就创建一个实例,执行之,并把计算的结果以标准的HTML协议能接受的格式组织数据并返回给客户端,否则要编译对应的Servlet。
WEB容器,正如其它容器一样,利用Pool管理驻存在内存中的Servlet实例,以便提高系统运行的效率。
(二)、画出该系统的原理图
(三)、服务器小程序S1是如何导向S2的?
服务器小程序S1打印一个标准的HTML的FORM,通过FORM的Action属性指向服务器
小程序S2。
(四)、在S2中是如何跨容器导入无状态会话类的实例的?
S2所要导入的是一个表示求解一元二次方程业务逻辑的无状态会话组件,所以可以利用
J2EE的注入机制导入该组件的一个实例作为其成员变量,从而调用其远程方法。
(五)、无状态会话类和有状态会话类之间有着什么样的差别?
有状态会话类的一个实例可作为一个客户和服务器会话期间数据交流的平台,保留该客户会话期间的痕迹,典型的例子是在线图书订购系统的“购物车”。
客户断开连接,与之对应的有状态会话类的实例也从内存中被释放掉。
而无状态会话类不用于记录客户与会话期间的痕迹,用内存池即POOL管理。
当客户请求一个无状态会话类的一个实例,如果池中有这样一个实例,便取出响应该客户的请求,否则应用服务器则创建一个新的实例
(六)、什么是注入机制?
适用于有状态会话类的引用吗?
所谓注入机制是J2EEEJB3.0引用无状态会话类的一种方法,通过@EJB标注,客户端导入无状态会话类的一个实例作为其成员变量。
注入机制只适用于无状态会话类,不适用有状态会话类。
(七)、如果使用C/S模型,还能在客户端使用注入机制吗?
如果使用Client/Server模型,一般情况下即使是请求某个无状态会话类的一个远程对象,也不使用注入机制,而是使用命名目录服务,通过JNDI检索到该远程对象
(八)、如果不使用注入机制,那么使用什么方法在客户端导入会话类的实例?
如果不使用注入机制,必须使用命名目录服务,通过JNDI检索到该远程对象。
(九)、什么是WEB容器?
试举一、二个支持JSP和Servlet的WEB容器。
所谓WEB容器,就是一种对网页、脚本、和其它代码提供支撑的软件,例如J2EEWEB容
器提供对JSP网页、JSP脚本、JSPTag、服务器小程序Servlet等的支撑。
“支撑”的含意很广,从数据的交流、系统的安全到对象的生命周期,都属于WEB管理的范围。
支持JSP和Servlet的WEB容器,典型的例子是ApacheTomcat。
(十)、什么是EJB容器?
它与应用服务器的关系是什么?
试举一、二个常见的应用服务器。
所谓EJB容器是一种企业级Java组件的支撑软件,从EJB的实例创建、系统的安全到对象的生命周期等,都属于EJB容器支撑的范围。
一个应用服务器一般包括WEB容器、EJB容器和JNDI命名目录服务器。
典型的J2EE服务器有ORACLE的GlassFish和Hibenaute的JBOSS。
(十一)、试说明基于J2EE的B/S分布式代数方程求解系统的开发步骤。
(十二)、试手工写出该系统的远程接口及会话类的Java源代码。
两个Servlet源代码。
1、封装方程根信息的JavaBean
packageorg.software_sy1001.middleware.j2ee.exp31;
importjava.io.Serializable;
publicclassRootResultimplementsSerializable
{
privatefloatX1;/*第一个根*/
privatefloatX2;/*第二个根*/
privatebooleanpossedingRealRoots;/*表示有无实根的玻尔变量*/
publicfloatgetX1(){
returnX1;
}
publicvoidsetX1(floatX1){
this.X1=X1;
}
publicfloatgetX2(){
returnX2;
}
publicvoidsetX2(floatX2){
this.X2=X2;
}
publicbooleanisPossedingRealRoots(){
returnpossedingRealRoots;
}
publicvoidsetPossedingRealRoots(booleanpossedingRealRoots){
this.possedingRealRoots=possedingRealRoots;
}
}
2、远程接口:
packageorg.software_sy1001.middleware.j2ee.exp31;
importjavax.ejb.Remote;
@Remote
publicinterfaceMyRootSloverRemote{
publicRootResultcomputeRoots(floata,floatb,floatc);//求解方程的远程方法
publicStringcocoWantToSaySomethin(Stringwords);//永恒的HelloWorld
}
3、无状态会话组件
packageorg.software_sy1001.middleware.j2ee.exp31;
importjavax.ejb.Stateless;
@Stateless
publicclassMyRootSloverBeanimplementsMyRootSloverRemote{
publicStringcocoWantToSaySomethin(Stringwords){
returnnewString("Dearcocosaystoyoulongtimenoseeyouand"+words);
//thrownewUnsupportedOperationException("Notsupportedyet.");
}
publicRootResultcomputeRoots(floata,floatb,floatc){
RootResultres=newRootResult();
floatdelta,x1,x2;
delta=b*b-4*a*c;
if(delta<0)res.setPossedingRealRoots(false);
else
{
x1=(-b+(float)Math.sqrt(delta))/(2*a);
x2=(-b-(float)Math.sqrt(delta))/(2*a);
res.setX1(x1);
res.setX2(x2);
res.setPossedingRealRoots(true);
}
returnres;
//thrownewUnsupportedOperationException("Notsupportedyet.");
}
}
4、服务器S1
packagecom.software_sy1001.middleware.j2ee.exp31.webcontainer;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
//twoclassesorinterfacesarenotneedeyetbutthoughincludingthem
importorg.software_sy1001.middleware.j2ee.exp31.MyRootSloverRemote;
importorg.software_sy1001.middleware.j2ee.exp31.RootResult;
publicclassS1extendsHttpServlet{
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
try{
//TODOoutputyourpagehere
out.println("");
out.println("
");out.println("
out.println("");
out.println("
");out.println("
out.println("
Second-DegreeAlgebraicEquationSolving
");out.println("
out.println("a:
");
out.println("b:
");
out.println("c:
");
out.println("
out.println("
");
out.println("");
out.println("
out.println("");
out.println("");
}finally{
out.close();
}
}
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
processRequest(request,response);
}
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
processRequest(request,response);
}
@Override
publicStringgetServletInfo(){
return"Shortdescription";
}//
}
5、服务器S2
packagecom.software_sy1001.middleware.j2ee.exp31.webcontainer;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;//OurEJBcomponentJar
importorg.software_sy1001.middleware.j2ee.exp31.MyRootSloverRemote;
importorg.software_sy1001.middleware.j2ee.exp31.RootResult;
//StandardJ2EEJar
importjavax.ejb.EJB;
publicclassS2extendsHttpServlet{
//So-calledthetheinjectingmechanismtointroduceaSLSBasamemberfield
@EJB
MyRootSloverRemotesolver=null;
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
try{
//TODOoutputyourpagehere
//Extractingthreecoefficientsoftheequationbyusingrequestargument
floata,b,c;
Stringcocos_words="Mychildren,Iloveyouverymuch!
";
Stringcocos_entire_phase=null;
RootResultroots=null;
a=Float.parseFloat(request.getParameter("a"));
b=Float.parseFloat(request.getParameter("b"));
c=Float.parseFloat(request.getParameter("c"));
roots=puteRoots(a,b,c);
cocos_entire_phase=solver.cocoWantToSaySomethin(cocos_words);
out.println("");
out.println("
");out.println("
out.println("");
out.println("
");StringBufferequation=newStringBuffer();
equation.append(request.g
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉理工 中间件 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)