版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
軟件11級中間件復習題參考答案二、問答題a)什么是RMI?與RMI/IIOP的差異是什么?
RMI,RemoteMethodInvocztion,即遠程方法調(diào)用。和RMI/IIOP相同的地方是兩種方法都使用JAVA創(chuàng)立遠程對象的接口,而兩者使用的網(wǎng)絡協(xié)議有所不同。后者使用CORBA標準的通用協(xié)議IIOP,所以可以和CORBA應用通訊。換句話說,一個CORBA客戶端可以訪問一個RMI/IIOP效勞器。b)什么是CORBA?與RMI/IIOP的差異是什么?
CORBA,CommonObjectRequestBrockerAchitecture。即通用對象請求代理體系框架,是一種分布式中間件標準。和RMI/IIOP不同的地方,前者使用IDL通用接口定義語言定義遠程對象的接口,而后者是純粹的JAVA分布式體系,使用JAVA定義遠程接口。c)CORBA體系結構的中間件是什么?
CORBA體系結構的中間件是ORB,即對象請求代理d)客戶端的碼根和效勞器端的框架作用是什么?
客戶端的碼根和效勞器端的框架作用是什么?客戶端的碼根是遠程對象的本地鏡像,也就是遠程對象的本地代理,主要負責遠程方法參數(shù)打包和遠程方法調(diào)用返回結果的解包。效勞器端的框架是效勞器的碼根。e)試列舉常用的中間件類型。
1、遠程過程調(diào)用中間件,即RPC。2、面向對象中間件,例如:RMI.RMI/IIOP,CORBA,EJB,DCOM等。3、面向消息中間件,例如:JavaMessageService,IBMMQSeries,WebServices等。4、基于事件中間件。f)基于RMI/IIOP的分布式應用開發(fā)步驟及請考前須知是什么?
1、用JAVA定義遠程接口。注意,遠程接口要繼承,遠程方法要拋出。2、實現(xiàn)遠程接口。注意,實現(xiàn)遠程接口的類必須繼承可移植遠程對象,即。3、開發(fā)效勞器程序。4、開發(fā)客戶端程序。5、編譯所有JAVA源代碼。6、使用rmic編譯遠程對象實現(xiàn)的字節(jié)碼文件,產(chǎn)生客戶端的碼根和效勞器端的框架。例如:rmic–iiopRMIIIOPApp.RemoteObjectImpl。注意,rmic要使用–iiop選項。g)基于JavaCORBA的分布式應用開發(fā)步驟及請考前須知是什么?
1、使用IDL接口定義語言定義遠程接口。2、使用jdk1.6的idlj編譯接口定義文件。注意:idlj的選項是-fall。3、實現(xiàn)遠程接口。注意:實現(xiàn)遠程接口的類必須繼承效勞器端的POA對象。4、實現(xiàn)效勞器程序。5、實現(xiàn)客戶端程序。h)什么是POA?它的作用是什么?
POA,PortableObjectAdapter。即可移植對象適配器對象。主要的作用有,管理遠程對象,遠程方法參數(shù)的打包和解包。i)試畫出基于JDBC-ODBC橋的數(shù)據(jù)庫應用各模塊之間關系示意圖。j)什么是J2EE容器?與EJB容器的關系是什么?試列舉至少二種J2EE容器。所謂J2EE容器,是一種提供象通訊、平安、對象生命周期、數(shù)據(jù)瞬時的一致性、軟件構件的布署等效勞的支撐軟件,包括WEB容器和EJB容器。J2EE容器又叫J2EE應用效勞器,例如JBOSS,GlassFish等都可用作J2EE容器k)什么是無狀態(tài)會話Bean?什么是有狀態(tài)會話Bean?什么是實體Bean?它們的區(qū)別是什么?一個用戶連接到效勞器,從連接起到斷開止,稱為一個會話,英語術語session。有狀態(tài)會話組件,記錄會話期間,一個客戶和效勞器端數(shù)據(jù)交流的痕跡。當一個客戶申請一個有狀態(tài)會話組件時,組件效勞器就為這個用戶創(chuàng)立一個唯一的有狀態(tài)會話組件對象,其生命周期即為會話時間。而無狀態(tài)會話組件,不保存客戶會話的痕跡,所以一個駐存在內(nèi)存中的無狀態(tài)會話組件對象可以效勞多個客戶。當一個客戶請求一個無狀態(tài)會話組件對象時,如果在組件容器連接池中存在,那么就分配給該用戶,否那么,就創(chuàng)立一個新的對象。實體組件嚴格地對應后臺數(shù)據(jù)庫中的一個表單。你可以把它視為一個內(nèi)存數(shù)據(jù)庫表單。一個存活實體組件對象與對應數(shù)據(jù)庫表單數(shù)據(jù)的一致性,由組件容器維護。l)什么是EJB的注入機制?EJB3.0采用JAVA標注實體組件對象注入機制,大大地簡化了基于J2EE數(shù)據(jù)庫存編程。所謂注入機制,即當容器在一個會話組件對象內(nèi)遇到導入一個實體對象的標注時,即時創(chuàng)立該實體組件的一個對象。舊版本的J2EE,程序員必須顯式地創(chuàng)立一個實體組件對象。m)什么是SSSB的管理池?(poolingSatelessSessionBeans)見k>n)什么是EJB的JavaPersistence技術?見k>o)試說明以下EJBJava標注的意義:@Remote,@Stateless,@Stateful,@Entity,@EJB,@Id,@Column,@PersistenceContext,@Table,@NamedQuery。1)@Remote標注遠程2)@Stateless標注無狀態(tài)會話組件3)@Stateful標注有狀態(tài)會話組件4)@Entity標注實體組件5)@EJB實體組件注入機制標注6)@PersitenceContext利用JAVAPersistence機制導入實體組件標注7)@Id標注實體組件所對應的數(shù)據(jù)庫表單的主鍵8)@Column標注實體組件某成員變量為對應表單的字段9)@Table標注實體組件對應的表單10)@NamedQuerry標注命名SQL查詢語句綜合題三、基于J2EE的B/S分布式代數(shù)方程求解系統(tǒng)〔既考試綜合題〕問題:〔一〕、簡述基于J2EE的B/S分布式代數(shù)方程求解系統(tǒng)的開發(fā)原理利用無狀態(tài)會話組件表示代數(shù)方程求解的業(yè)務邏輯。編寫二個效勞器端小程序S1和S2。ServletS1用于顯示輸入代數(shù)方程三個系數(shù)的HTML表單〔Form〕,表單的Method屬性設置為Post,而其Action指向ServletS2。效勞器端小程序S2,利用J2EE的注入機制,跨容器地創(chuàng)立無狀態(tài)會話組件的一個實例作為其成員,從而調(diào)用其遠程接口所呈現(xiàn)的求解代數(shù)方程的遠程方法。支持J2EE的應用效勞器GlashFish包括EJB容器和WEB容器,后者為支持Servlet和JSP的WEB效勞器,例如ApacheTomecat。跨容器數(shù)據(jù)交流由應用效勞器支撐。這個應用程序的客戶端,正如其名子所示,是瀏覽器。效勞器端小程序S2承當三個主要任務:一是提取S1所提交的三個系數(shù),由其Request對象完成,二是利用J2EE注入機制創(chuàng)立無狀態(tài)會話組件的一個實例并調(diào)用其遠程方法,三是利用Response對角獲取一個輸出流對象,把代數(shù)方程求解的結果以HTML格式顯示給客戶端。WEB效勞器當首次收到一個請求Servlet時,如果該效勞器小程序已經(jīng)被編譯就創(chuàng)立一個實例,執(zhí)行之,并把計算的結果以標準的HTML協(xié)議能接受的格式組織數(shù)據(jù)并返回給客戶端,否那么要編譯對應的Servlet。WEB容器,正如其它容器一樣,利用Pool管理駐存在內(nèi)存中的Servlet實例,以便提高系統(tǒng)運行的效率?!捕场嫵鲈撓到y(tǒng)的原理圖〔三〕、效勞器小程序S1是如何導向S2的?效勞器小程序S1打印一個標準的HTML的FORM,通過FORM的Action屬性指向效勞器小程序S2?!菜摹场⒃赟2中是如何跨容器導入無狀態(tài)會話類的實例的?S2所要導入的是一個表示求解一元二次方程業(yè)務邏輯的無狀態(tài)會話組件,所以可以利用J2EE的注入機制導入該組件的一個實例作為其成員變量,從而調(diào)用其遠程方法?!参濉?、無狀態(tài)會話類和有狀態(tài)會話類之間有著什么樣的差異?有狀態(tài)會話類的一個實例可作為一個客戶和效勞器會話期間數(shù)據(jù)交流的平臺,保存該客戶會話期間的痕跡,典型的例子是在線圖書訂購系統(tǒng)的“購物車”。客戶斷開連接,與之對應的有狀態(tài)會話類的實例也從內(nèi)存中被釋放掉。而無狀態(tài)會話類不用于記錄客戶與會話期間的痕跡,用內(nèi)存池即POOL管理。當客戶請求一個無狀態(tài)會話類的一個實例,如果池中有這樣一個實例,便取出響應該客戶的請求,否那么應用效勞器那么創(chuàng)立一個新的實例〔六〕、什么是注入機制?適用于有狀態(tài)會話類的引用嗎?所謂注入機制是J2EEEJB3.0引用無狀態(tài)會話類的一種方法,通過@EJB標注,客戶端導入無狀態(tài)會話類的一個實例作為其成員變量。注入機制只適用于無狀態(tài)會話類,不適用有狀態(tài)會話類?!财摺场⑷绻褂肅/S模型,還能在客戶端使用注入機制嗎?如果使用Client/Server模型,一般情況下即使是請求某個無狀態(tài)會話類的一個遠程對象,也不使用注入機制,而是使用命名目錄效勞,通過JNDI檢索到該遠程對象〔八〕、如果不使用注入機制,那么使用什么方法在客戶端導入會話類的實例?如果不使用注入機制,必須使用命名目錄效勞,通過JNDI檢索到該遠程對象。〔九〕、什么是WEB容器?試舉一、二個支持JSP和Servlet的WEB容器。所謂WEB容器,就是一種對網(wǎng)頁、腳本、和其它代碼提供支撐的軟件,例如J2EEWEB容器提供對JSP網(wǎng)頁、JSP腳本、JSPTag、效勞器小程序Servlet等的支撐?!爸巍钡暮夂軓V,從數(shù)據(jù)的交流、系統(tǒng)的平安到對象的生命周期,都屬于WEB管理的范圍。支持JSP和Servlet的WEB容器,典型的例子是ApacheTomcat?!彩?、什么是EJB容器?它與應用效勞器的關系是什么?試舉一、二個常見的應用效勞器。所謂EJB容器是一種企業(yè)級Java組件的支撐軟件,從EJB的實例創(chuàng)立、系統(tǒng)的平安到對象的生命周期等,都屬于EJB容器支撐的范圍。一個應用效勞器一般包括WEB容器、EJB容器和JNDI命名目錄效勞器。典型的J2EE效勞器有ORACLE的GlassFish和Hibenaute的JBOSS?!彩弧场⒃囌f明基于J2EE的B/S分布式代數(shù)方程求解系統(tǒng)的開發(fā)步驟?!彩?、試手工寫出該系統(tǒng)的遠程接口及會話類的Java源代碼。兩個Servlet源代碼。1、封裝方程根信息的JavaBeanpackageorg.software_sy1001.middleware.j2ee.exp31;import;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;import;@RemotepublicinterfaceMyRootSloverRemote{publicRootResultcomputeRoots(floata,floatb,floatc);//求解方程的遠程方法publicStringcocoWantToSaySomethin(Stringwords);//永恒的HelloWorld}3、無狀態(tài)會話組件packageorg.software_sy1001.middleware.j2ee.exp31;import;@StatelesspublicclassMyRootSloverBeanimplementsMyRootSloverRemote{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、效勞器S1packagecom.software_sy1001.middleware.j2ee.exp31.webcontainer;import;import;import;import;import;import;//twoclassesorinterfacesarenotneedeyetbutthoughincludingthemimportorg.software_sy1001.middleware.j2ee.exp31.MyRootSloverRemote;importorg.software_sy1001.middleware.j2ee.exp31.RootResult;publicclassS1extendsServlet{protectedvoidprocessRequest(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();try{//TODOoutputyourpagehereout.println("<html>");out.println("<head>");out.println("<title>ServletS1</title>");out.println("</head>");out.println("<body>");out.println("<center>");out.println("<h3>Second-DegreeAlgebraicEquationSolving</h3>");out.println("<Formmethod=\"post\"action=\"S2\">");out.println("a:<inputtype=\"text\"name=\"a\"size=\"25\"><br>");out.println("b:<inputtype=\"text\"name=\"b\"size=\"25\"><br>");out.println("c:<inputtype=\"text\"name=\"c\"size=\"25\"><br>");out.println("<inputtype=\"submit\">");out.println("<inputtype=\"reset\"><br>");out.println("</Form>");out.println("</center>");out.println("</body>");out.println("</html>");}finally{out.close();}}@OverrideprotectedvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{processRequest(request,response);}@OverrideprotectedvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{processRequest(request,response);}@OverridepublicStringgetServletInfo(){return"Shortdescription";}//</editor-fold>}5、效勞器S2packagecom.software_sy1001.middleware.j2ee.exp31.webcontainer;import;import;import;import;import;importjavax.se;//OurEJBcomponentJarimportorg.software_sy1001.middleware.j2ee.exp31.MyRootSloverRemote;importddleware.j2ee.exp31.RootResult;//StandardJ2EEJarimport;publicclassS2extendsServlet{//So-calledthetheinjectingmechanismtointroduceaSLSBasamemberfield@EJBMyRootSloverRemotesolver=null;protectedvoidprocessRequest(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();try{//TODOoutputyourpagehere//Extractingthreecoefficientsoftheequationbyusingrequestargumentfloata,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=solverputeRoots(a,b,c);cocos_entire_phase=solver.cocoWantToSaySomethin(cocos_words);out.println("<html>");out.println("<head>");out.println("<title>ServletS2</title>");out.println("</head>");out.println("<body>");StringBufferequation=newStringBuffer();equation.append(request.getParameter("a")+"X^2+");equation.append(request.getParameter("b")+"X+");equation.append(request.getParameter("c")+"=0");out.println("<marquee>"+cocos_entire_phase+"</marquee>");out.println("<h2>Fortheequation"+equation.toString()+":</h2><br>");out.println("<h2>");if(roots.isPossedingRealRoots()){out.println("X1="+Float.toString(roots.getX1())+"<br>");out.println("X2="+Float.toString(roots.getX2())+"<br>");}else{out.println("Therearenorealrootsatallhaha<br>");}out.println("</h2");out.println("</body>");out.println("</html>");}finally{out.close();}}@OverrideprotectedvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{processRequest(request,response);}10@OverrideprotectedvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{processRequest(request,response);}@OverridepublicStringgetServletInfo(){return"Shortdescription";}//</editor-fold>}〔十三〕、在開發(fā)S1和S2時,應該導入什么包?在開發(fā)效勞器小程序時應該導入標準的J2EE包javaee.jar和效勞器EJB模塊的jar包?!彩摹?、如何在單機和局域網(wǎng)上測試該系統(tǒng)?在本機上翻開瀏覽器,輸入效勞器小程序S1的://localhost:8080/RootSolverWeb/S1在學院局域網(wǎng)上運行系統(tǒng)時,必須把localhost換成應用效勞器的IP地址?!彩濉?、什么是描述布署符?作用是什么?所謂布署描述符,DeploymentDescriptor,是一個WEB應用或效勞中描述效勞器小程序等的一個XML文檔,一般由WEB容器生成和維護。所有的體系結構,無一例外,都使用XML文檔來描述結構和數(shù)據(jù)。從DotNetFramwork到J2EE,除了使用XML進行標準,還使用XML作為輕量級信息的載體和協(xié)議?!彩?、當用瀏覽器翻開一個Servlet時,WEB容器是怎么操作的?WEB效勞器當首次收到一個請求Servlet時,如果該效勞器小程序已經(jīng)被編譯就創(chuàng)立一個實例,執(zhí)行之,并把計算的結果以標準的HTML協(xié)議能接受的格式組織
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年紡織品二手交易合同3篇
- 二零二五年度回遷房買賣合同糾紛處理協(xié)議下載3篇
- 2025年度數(shù)字圖書館系統(tǒng)安裝合同范本3篇
- 二零二五年度專利申請合同模板:發(fā)明專利申請代理協(xié)議
- 二零二五年北京二手車拍賣交易合同模板2篇
- 2025年度管道天然氣運輸安全保障合同
- 2025網(wǎng)絡業(yè)務代理合作合同
- 2025特許加盟合同范本參考
- 2025機動車輛質押借款正規(guī)合同范本
- 2025版酒店客房設施設備更新與維修合同3篇
- 數(shù)據(jù)中心電力設備調(diào)試方案
- 2024年度國際物流運輸合同3篇
- 新入職員工年終工作總結課件
- 廣西南寧市第三十七中學2024-2025學年七年級上學期11月第一次月考語文試題(含答案)
- 2024-2025學年高二上學期期末數(shù)學試卷(基礎篇)(含答案)
- 2024年人力資源個人年終工作總結(6篇)
- 2024年中考物理真題及分類匯編-考點25:磁現(xiàn)象-電生磁
- 研究生攻讀(碩)博士學位期間擬開展的研究計劃范文
- 西安交通大學《計算物理與程序設計》2022-2023學年第一學期期末試卷
- 《寒假安全教育》課件
- 中華傳統(tǒng)文化之文學瑰寶學習通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論