重新排版一下辰企,方便背誦
1.試列舉常用的中間件類型。
答:
1渊抽、遠(yuǎn)程過程調(diào)用 中間件蟆豫,即RPC议忽。
2懒闷、面向?qū)ο?/strong> 中間件,例如:RMI. RMI/IIOP, CORBA, EJB, DCOM等栈幸。
3愤估、面向消息 中間件,例如:Java Message Service, IBM MQSeries, Web Services等速址。
4玩焰、基于事件 中間件。
2.基于RMI/IIOP的分布式應(yīng)用開發(fā)步驟及請(qǐng)注意事項(xiàng)是什么芍锚?
答:(定義 - 實(shí)現(xiàn) - 服務(wù)器 - 客戶端 - 編譯JAVA - 編譯遠(yuǎn)程對(duì)象)
1)用JAVA 定義 遠(yuǎn)程接口
注意昔园,遠(yuǎn)程接口要繼承 java.rmi.Remote, 遠(yuǎn)程方法要拋出 java.rmi.RemoteException蔓榄。
2)實(shí)現(xiàn) 遠(yuǎn)程接口
注意,實(shí)現(xiàn) 遠(yuǎn)程接口的類 必須繼承 可移植遠(yuǎn)程對(duì)象 默刚,即 javax.rmi.PortableRemoteObject甥郑。
3)開發(fā) 服務(wù)器程序
4)開發(fā) 客戶端程序
5)編譯所有JAVA源代碼
6)使用 rmic 編譯 遠(yuǎn)程對(duì)象 實(shí)現(xiàn)的字節(jié)碼文件,產(chǎn)生 客戶端的碼根 和 服務(wù)器端的框架
例如:rmic –iiop RMIIIOPApp.RemoteObjectImpl荤西。
注意澜搅,rmic要使用 –iiop選項(xiàng)。
3.什么是無狀態(tài)會(huì)話Bean邪锌?什么是有狀態(tài)會(huì)話Bean?什么是實(shí)體Bean勉躺?它們的區(qū)別是什么?
答:(這個(gè)題的答案有點(diǎn)怪)
Session:一個(gè)用戶連接到服務(wù)器觅丰,從連接起到斷開止饵溅,稱為一個(gè)會(huì)話,英語術(shù)語session妇萄。
無狀態(tài)會(huì)話組件概说,不保存客戶會(huì)話的痕跡,所以一個(gè)駐存在內(nèi)存中的無狀態(tài)會(huì)話組件對(duì)象可以服務(wù)多個(gè)客戶嚣伐。
當(dāng)一個(gè)客戶請(qǐng)求一個(gè)無狀態(tài)會(huì)話組件對(duì)象時(shí)糖赔,如果在組件容器連接池中存在,那么就分配給該用戶轩端,否則放典,就創(chuàng)建一個(gè)新的對(duì)象。
有狀態(tài)會(huì)話組件基茵,記錄會(huì)話期間奋构,一個(gè) 客戶和服務(wù)器端 數(shù)據(jù)交流的痕跡。
當(dāng)一個(gè)客戶申請(qǐng)一個(gè)有狀態(tài)會(huì)話組件時(shí)拱层,組件服務(wù)器就為這個(gè)用戶創(chuàng)建一個(gè)唯一的有狀態(tài)會(huì)話組件對(duì)象弥臼,其生命周期即為會(huì)話時(shí)間。
實(shí)體組件根灯,嚴(yán)格地 對(duì)應(yīng) 后臺(tái)數(shù)據(jù)庫中的一個(gè) 表單径缅。
你可以把它視為一個(gè)內(nèi)存數(shù)據(jù)庫表單。一個(gè)存活實(shí)體組件對(duì)象與對(duì)應(yīng)數(shù)據(jù)庫表單數(shù)據(jù)的一致性烙肺,由組件容器維護(hù)纳猪。
4. 試說明以下EJB Java標(biāo)注的意義:@Remote, @Stateless, @Stateful, @Entity, @EJB, @Id, @Column, @PersistenceContext, @Table, @NamedQuery。
答:
- @Remote 標(biāo)注 遠(yuǎn)程
- @Stateless 標(biāo)注 無狀態(tài)會(huì)話組件
- @Stateful 標(biāo)注 有狀態(tài)會(huì)話組件
- @Entity 標(biāo)注 實(shí)體組件
- @EJB 實(shí)體組件 注入機(jī)制標(biāo)注
- @Id 標(biāo)注 實(shí)體組件 所對(duì)應(yīng)的數(shù)據(jù)庫表單的主鍵
- @Column 標(biāo)注 實(shí)體組件 某成員變量為對(duì)應(yīng)表單的字段
- @PersitenceContext 利用JAVAPersistence機(jī)制導(dǎo)入實(shí)體組件標(biāo)注
- @Table 標(biāo)注 實(shí)體組件 對(duì)應(yīng)的表單
- @NamedQuerry 標(biāo)注 命名SQL查詢語句
5桃笙、 什么是EJB的注入機(jī)制氏堤?
答:
EJB3.0采用 JAVA標(biāo)注實(shí)體組件對(duì)象注入機(jī)制,大大地簡化了基于J2EE數(shù)據(jù)庫存編程搏明。
所謂注入機(jī)制鼠锈,
即當(dāng)容器在一個(gè) 會(huì)話組件對(duì)象 內(nèi)遇到 導(dǎo)入一個(gè)實(shí)體對(duì)象的標(biāo)注 時(shí)闪檬,即時(shí)創(chuàng)建該 實(shí)體組件的一個(gè) 對(duì)象
舊版本的J2EE,程序員必須顯式地創(chuàng)建一個(gè)實(shí)體組件對(duì)象购笆。
6谬以、試說明CORBA非同步方法的特點(diǎn)
答:
CORBA IDL非同步方法是一個(gè)
非阻塞,無返回由桌,無異常拋出为黎,以及無out和inout形式參數(shù)
的遠(yuǎn)程方法。
7行您、什么是WEB服務(wù)的定義語言铭乾?什么是WEB服務(wù)的網(wǎng)絡(luò)協(xié)議?什么是WEB服務(wù)的命名目錄服務(wù)器娃循?
答:
- WEB服務(wù)的定義語言是WSDL炕檩,即Web Service Description Language,
XML大綱的命名空間為http://www.w3.org/TR/wsdl捌斧。 - WEB服務(wù)的網(wǎng)絡(luò)協(xié)議是SOAP笛质,即Simple Object Access Protocol,
SOAP命名空間為xmlns:s=http://www.w3.org/2001/06/soap-envelope捞蚂。 - WEB服務(wù)的命名目錄服務(wù)器是UDDI妇押,即Universal Description, Discovery and Integration。
8姓迅、什么是big Web Service敲霍?
答:
基于SOAP、WSDL丁存、UDDI等 XML技術(shù)的中間件體系結(jié)構(gòu) 所構(gòu)建的 WEB服務(wù) 稱為大WEB服務(wù)肩杈。
9、什么是POA解寝?它的作用是什么扩然?
答:
POA, Portable Object Adapter。
即 可移植對(duì)象適配器對(duì)象 聋伦。
主要的作用有夫偶,管理 遠(yuǎn)程對(duì)象,遠(yuǎn)程方法參數(shù)的 打包和解包嘉抓。
10索守、什么是J2EE容器晕窑?與EJB容器的關(guān)系是什么抑片?試列舉至少二種J2EE容器。
答:
- 所謂J2EE容器杨赤,是一種提供對(duì)象通訊敞斋、安全截汪、對(duì)象生命周期、數(shù)據(jù)瞬時(shí)的一致性植捎、軟件構(gòu)件的布署 等服務(wù)的支撐軟件
- 包括WEB容器和EJB容器
- J2EE容器又叫J2EE應(yīng)用服務(wù)器衙解,例如JBOSS,GlassFish等都可用作J2EE容器焰枢。
11蚓峦、在基于CORBA的中間件分布式應(yīng)用開發(fā)中,一般先使用IDL定義接口济锄。試說明in, out, inout三種遠(yuǎn)程方法的形式參數(shù)的差別暑椰。
答:
in 的 實(shí)際參數(shù) 從客戶端 傳遞 到服務(wù)器端,
out 的 實(shí)際參數(shù) 在執(zhí)行完 遠(yuǎn)程方法 后能 把數(shù)據(jù)從服務(wù)器端 帶回 客戶端荐绝,
inout 的 實(shí)際參數(shù) 把數(shù)據(jù)從客戶端 帶給 遠(yuǎn)程方法一汽,又能把 遠(yuǎn)程方法執(zhí)行的結(jié)果 帶回客戶端。
使用out形式參數(shù)低滩,IDL接口中定義的操作 完全無需返回計(jì)算結(jié)果召夹。
12、客戶端的碼根和服務(wù)器端的框架作用是什么恕沫?
答:
-
客戶端的碼根 是遠(yuǎn)程對(duì)象的 本地鏡像监憎,也就是遠(yuǎn)程對(duì)象的 本地代理
主要負(fù)責(zé) 遠(yuǎn)程方法 參數(shù) 打包 和 遠(yuǎn)程方法 調(diào)用返回結(jié)果 的解包 - 服務(wù)器端的框架 是服務(wù)器的碼根
13、什么是CORBA婶溯?與RMI/IIOP的差別是什么枫虏?
答:
CORBA, Common Object Request Brocker Achitecture。
- 即 通用對(duì)象 請(qǐng)求代理 體系框架爬虱,是一種分布式中間件 規(guī)范隶债。
- 和RMI/IIOP不同的地方:(定義遠(yuǎn)程接口的方式不同)
前者使用 IDL通用接口定義語言 定義 遠(yuǎn)程對(duì)象的接口,
而后者是純粹的 JAVA分布式體系 跑筝,使用 JAVA 定義遠(yuǎn)程接口死讹。
- module org, jcorba映射成Java什么?
2.結(jié)構(gòu)體映射成Java什么類型曲梗?
3.NPerson映射成Java什么類?作用是什么赞警?
4.接口操作void display(out NPerson persons);被映射成Java什么方法?如何實(shí)現(xiàn)這個(gè)遠(yuǎn)程方法虏两?
答:
- 1.package org.jcorba;
- 2.終極類 Person愧旦。
- 3.共生成兩個(gè)類: NPersonHelper和NPersonHolder。
籠統(tǒng)地將定罢,NPersonHelper類用于Corba的類型轉(zhuǎn)換笤虫,
而NPersonHolder用于生成Corba的網(wǎng)絡(luò)輸入、輸出流。 - 4.public void display(NPersonHolder persons);
構(gòu)建一個(gè)Person對(duì)象數(shù)組琼蚯,并賦予形式參數(shù)persons的公共成員變量 value酬凳。
15、如何在一個(gè)CORBA文件中定義一個(gè)一維某特定類型的動(dòng)態(tài)數(shù)組遭庶?CORBA idl可變類型是什么宁仔?類似于VB中的什么類型?
答:
- 使用關(guān)鍵字 sequence峦睡。
例如翎苫,typedef sequence<Person> NPerson; NPerson就是Person對(duì)象的一維可變長的動(dòng)態(tài)數(shù)組。 - CORBA idl可變類型是 any榨了,
- 類似于VB中的 Variant 類型拉队。
16、下面是一個(gè)Corba IDL文件:
答:
sequence<octet>被映射成Java字節(jié)數(shù)組阻逮,
而Data被映射成 DataHelper 和 DataHolder 兩個(gè)類粱快。
DataHolder類 的公共成員變量為一個(gè)變長的 字節(jié)數(shù)組。