武汉理工中间件复习题_第1页
武汉理工中间件复习题_第2页
武汉理工中间件复习题_第3页
武汉理工中间件复习题_第4页
武汉理工中间件复习题_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

千里之行,始于足下让知识带有温度。第第2页/共2页精品文档推荐武汉理工中间件复习题软件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");

out.println("");

out.println("ServletS1");

out.println("");

out.println("");

out.println("");

out.println("Second-DegreeAlgebraicEquationSolving

");

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("ServletS2");

out.println("");

out.println("");

StringBufferequation=newStringBuffer();

equation.append(request.getParameter("a")+"X^2+");

equation.append(request.getParameter("b")+"X+");

equation.append(request.getParameter("c")+"=0");

out.println(""+cocos_entire_phase+"");

out.println("Fortheequation"+equation.toString()+":

");

out.println("");

if(roots.isPossedingRealRoots())

{

out.println("X1="+Float.toString(roots.getX1())+"

");

out.println("X2="+Float.toString(roots.getX2())+"

");

}

else

{

out.println("Therearenorealrootsatallhaha

");

}

out.println("");

out.println("");

}finally{

out.close();

}

}

@Override

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

processRequest(request,response);

}

10

@Override

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

processRequest(request,response);

}

@Override

publicStringgetServletInfo(){

return"Shortdescription";

}//

}

(十三)、在开发S1和S2时,应当导入什么包?

在开发服务器小程序时应当导入标准的J2EE包javaee.jar和服务器EJB模块的jar包。(十四)、如何在单机和局域网上测试该系统?

在本机上打开扫瞄器,输入服务器小程序S1的网址:

在学院局域网上运行系统时,必需把localhost换成应用服务器的IP地址。

(十五)、什么是描述布署符?作用是什么?

所谓布署描述符,DeploymentDescriptor,是一个WEB应用或服务中描述服务器小程序等的一个XML文档,普通由WEB容器生成和维护。全部的体系结构,无一例外,都使用XML文档来描述结构和数据。从DotNetFramwork到J2EE,除了使用XML举行规范,还使用XML作为轻量级信息的载体和协议。

(十六)、当用扫瞄器打开一个Servlet时,WEB容器是怎么操作的?

WEB服务器当首次收到一个哀求Servlet时,假如该服务器小程序已经被编译就创建一个实例,执行之,并把计算的结果以标准的HTML协议能接受的格式组织数据并返回给客户端,否则要编译对应的Servlet。WEB容器,正如其它容器一样,利用Pool管理驻存在内存中的Servlet实例,以便提高系统运行的效率。

(十七)、谈谈Servlet编程和普通的JSP编码的差别。

服务器小程序是纯Java编程,既打印普通数据,也打印HTML标记。JSP网页是HTML的Java脚本编程,既有HTMLTag、JSP标准Tag,也有类似于Java句法的脚本小程序即Scriplet。传统的JSP网页编程,没有把表达层和规律层分开,所以已经基本上为新的WEB应用开发框架,象StrutsMVC等所替代。

(十八)、试写出测试该系统的普通Java应用客户端。

假如不使用注入机制,而是使用JNDI命目录录服务检索,那么必需在无状态会话组件

类的@Stateless加入JNDI检索名,换句话说,把标注换成:@Stateless(mappedName=”ejb/MyRootSloverean”)。

packagePkg;

importjava.util.Properties;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论