?? 5.3 corba技術(shù)及實(shí)例.txt
字號(hào):
{"Expersoft Corp.","Iona Technologies","Visigenic Software",
"IBM","Sun"},
{"OLE and ActiveX Bridges; Windows95/NT;
Solaris; HP-UX; AIX; JDK 1.0.2",
"Windows95/NT, MVS, OS/2, QNX, VxWorks, Solaris, HP-UX,
Irix, AIX, Digital UNIX, OLE Bridge",
"Windows95/NT, Sun OS, Solaris, HP-UX, AIX, Irix",
"Windows95/NT, Solaris, HP-UX, AIX, OS/390, OS/2, AS/400",
"Solaris (Client & Server), Windows95/NT (client), JDK 1.0.2"},
{"C++, Java", "Java, Smalltalk, Ada95, C++", "Java, C++",
"Java, C++", "Java, C++"},
{"http://www.expersoft.com", "http://www.iona.com",
"http://www.visigenic.com",
"http://www.software.ibm.com/ad/cb", "http://www.sun.com/solaris/neo/solaris_neo/index.html"}};
ORBQuery(String name) {
super(name);
}
public java.lang.String GetName(int index)
{
String Name;
Name = ORBVendors[index][0];
return Name;
}
public java.lang.String GetVendor(int index)
{
String Vendor;
Vendor = ORBVendors[index][1];
return Vendor;
}
public java.lang.String GetOS(int index)
{
String OS;
OS = ORBVendors[index][2];
return OS;
}
public java.lang.String GetLanguages(int index)
{
String Languages;
Languages = ORBVendors[index][3];
return Languages;
}
public java.lang.String GetURL(int index)
{
String URL;
URL = ORBVendors[index][4];
return URL;
}
}
至此,我們已經(jīng)寫(xiě)好了所有服務(wù)器方必需的代碼,下一步的工作是創(chuàng)建客戶小應(yīng)用,初始化客戶ORB,進(jìn)而擊活并調(diào)用剛剛生成的服務(wù)器對(duì)象。
4.創(chuàng)建CORBA小應(yīng)用
正如服務(wù)器對(duì)象要向服務(wù)器ORB登記一樣,客戶端小應(yīng)用或應(yīng)用程序需要向客戶機(jī)ORB登記。當(dāng)要獲得遠(yuǎn)程CORBA對(duì)象時(shí),客戶機(jī)采用了一種間接的方法,它通知客戶機(jī)ORB其意圖,由ORB負(fù)責(zé)ORB到ORB的通訊。這種請(qǐng)求方式由下面兩行代碼實(shí)現(xiàn)(在VisiBrokerforJava中):
//初始化ORB(使用applet)
org.omg.CORBA.ORBorb=org.omg.CORBA.ORB.init(this);
//檢索applet要調(diào)用的ORBInfo接口對(duì)象
ORBInfoQuery=ORBQuery.ORBInfoHelper.bind(orb,"ORBInfo");
執(zhí)行了bind()方法調(diào)用之后,我們的ORBInfoQuery本地變量與服務(wù)器的ORBInfo對(duì)象綁在一起。這一操作完成之后,我們就可以調(diào)用幫助方法來(lái)實(shí)現(xiàn)客戶端小應(yīng)用。記住,盡管示例中我們完全使用了Java語(yǔ)言,但實(shí)際上,服務(wù)器對(duì)象也可以用其他語(yǔ)言來(lái)實(shí)現(xiàn),如:COBOL、C++、Ada和Smalltalk。
5.編寫(xiě)簡(jiǎn)單的CORBA服務(wù)的一般流程
(以Java2為例):
l 編寫(xiě)所需要的接口IDL文件。
n foo.idl
module foo{
interface function{
float square_root(in float number);
}
}
l 用idltojava編譯idl文件。
n idltojava –fno-cpp foo.idl
l 用Javac編譯所產(chǎn)生的類。
n javac ~\*.java
l 生成實(shí)現(xiàn)類。
n (functions.java) functinosImpl.java
l 生成實(shí)現(xiàn)服務(wù)器。
n fooServer.java
l 生成客戶機(jī)應(yīng)用程序(或小程序)。
n fooClient.java
l 編譯實(shí)現(xiàn)服務(wù)器和客戶機(jī)代碼。
n javac functionsImpl.java fooServer.java fooClient.java
l 啟動(dòng)命名服務(wù)應(yīng)用程序tnameserv。
n tnameserv –ORBInitialPort 1080
l 啟動(dòng)服務(wù)器(用命名服務(wù)注冊(cè))。
n java fooServer –ORBInitialPort 1080
l 啟動(dòng)客戶機(jī)。
n java fooClient –ORBInitialPort 1080
6.結(jié)論
與單純的Java小應(yīng)用相比,創(chuàng)建CORBAJava應(yīng)用稍顯復(fù)雜。事實(shí)上,這同樣比用RMI創(chuàng)建純粹的Java分布式對(duì)象應(yīng)用要難一些。但是,CORBA和Java的聯(lián)合,所創(chuàng)建的應(yīng)用程序功能更為強(qiáng)大,更具可擴(kuò)充性,這是單純用JDK開(kāi)發(fā)所無(wú)法比擬的。另外,現(xiàn)實(shí)是企業(yè)界很少使用Java應(yīng)用程序。CORBA是兩全其美的選擇,一方面它允許開(kāi)發(fā)者利用已有的代碼保護(hù)投資,另一方面又可以充分發(fā)揮Java編程語(yǔ)言的優(yōu)勢(shì)。
5.4 JSP與CORBA技術(shù)的結(jié)合使用
若想實(shí)現(xiàn)Web上分布式客戶機(jī)/服務(wù)器模式的應(yīng)用程序,可以選擇多種不同的技術(shù)。但是,對(duì)于必須服務(wù)于大量用戶的應(yīng)用,我們認(rèn)為應(yīng)該首選CORBA,因?yàn)樗哂锌蓴U(kuò)展性和業(yè)界廣泛的支持。由于CORBA的強(qiáng)健性可以提高Java編程語(yǔ)言的性能,利用已有的基于標(biāo)準(zhǔn)的技術(shù),Java開(kāi)發(fā)者可以編寫(xiě)出功能強(qiáng)大的Web應(yīng)用程序。
想要對(duì)已有的Web軟件資源加以利用,或是編寫(xiě)真正功能強(qiáng)大的應(yīng)用程序,使Internet/Intranet成為通信主干,所使用的技術(shù)必須具有以下特性:
· 支持現(xiàn)有的C、C++和COBOL代碼
· 支持Java,以建立具有可移值性、平臺(tái)獨(dú)立性的面向?qū)ο蟮膽?yīng)用程序
· 商業(yè)中立性,只有這樣,應(yīng)用程序才易于維護(hù),且不會(huì)被時(shí)間淘汰。
· 可擴(kuò)充性,能夠支持大量用戶
· 它應(yīng)該被多種平臺(tái)所支持,而不是固定于某種平臺(tái)之上。
· 開(kāi)發(fā)模型應(yīng)該是面向?qū)ο蟮模ㄒ驗(yàn)镺OP有許多固有優(yōu)勢(shì))
· 端到端的安全性
· 廣泛的業(yè)界支持
這種技術(shù)便是以CORBA為最佳。
Servlets是JAVA 2.0中新增的一個(gè)全新功能,它是運(yùn)行在請(qǐng)求/面向請(qǐng)求服務(wù)器上的模塊,比如一個(gè)Java-enabled web 服務(wù)器, 和類似這樣的延伸場(chǎng)合. 例如, 一個(gè)servlet可以從一個(gè)HTML訂單表中獲取數(shù)據(jù)然后用一些商業(yè)上的算法來(lái)更新公司相應(yīng)的訂單數(shù)據(jù)庫(kù)。
也就是說(shuō):servlet能夠象CGI腳本一樣擴(kuò)展WEB服務(wù)器功能,但是servlet占用很少密集資源,有很多用CGI腳本編制的一些站點(diǎn)由于訪問(wèn)量劇增,性能迅速下降,這是CGI腳本一個(gè)缺點(diǎn)。同時(shí)由于servlet是用java編寫(xiě)的,因此是跨平臺(tái)的。可以這樣說(shuō),實(shí)際servlet是電子商務(wù)真正的開(kāi)始。
跨平臺(tái)的Java Servlet與跨語(yǔ)言的corba的強(qiáng)強(qiáng)聯(lián)合,使得開(kāi)發(fā)者可以編寫(xiě)出功能強(qiáng)大的Web應(yīng)用程序。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -