?? 5.3 corba技術及實例.txt
字號:
{"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;
}
}
至此,我們已經寫好了所有服務器方必需的代碼,下一步的工作是創(chuàng)建客戶小應用,初始化客戶ORB,進而擊活并調用剛剛生成的服務器對象。
4.創(chuàng)建CORBA小應用
正如服務器對象要向服務器ORB登記一樣,客戶端小應用或應用程序需要向客戶機ORB登記。當要獲得遠程CORBA對象時,客戶機采用了一種間接的方法,它通知客戶機ORB其意圖,由ORB負責ORB到ORB的通訊。這種請求方式由下面兩行代碼實現(xiàn)(在VisiBrokerforJava中):
//初始化ORB(使用applet)
org.omg.CORBA.ORBorb=org.omg.CORBA.ORB.init(this);
//檢索applet要調用的ORBInfo接口對象
ORBInfoQuery=ORBQuery.ORBInfoHelper.bind(orb,"ORBInfo");
執(zhí)行了bind()方法調用之后,我們的ORBInfoQuery本地變量與服務器的ORBInfo對象綁在一起。這一操作完成之后,我們就可以調用幫助方法來實現(xiàn)客戶端小應用。記住,盡管示例中我們完全使用了Java語言,但實際上,服務器對象也可以用其他語言來實現(xiàn),如:COBOL、C++、Ada和Smalltalk。
5.編寫簡單的CORBA服務的一般流程
(以Java2為例):
l 編寫所需要的接口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編譯所產生的類。
n javac ~\*.java
l 生成實現(xiàn)類。
n (functions.java) functinosImpl.java
l 生成實現(xiàn)服務器。
n fooServer.java
l 生成客戶機應用程序(或小程序)。
n fooClient.java
l 編譯實現(xiàn)服務器和客戶機代碼。
n javac functionsImpl.java fooServer.java fooClient.java
l 啟動命名服務應用程序tnameserv。
n tnameserv –ORBInitialPort 1080
l 啟動服務器(用命名服務注冊)。
n java fooServer –ORBInitialPort 1080
l 啟動客戶機。
n java fooClient –ORBInitialPort 1080
6.結論
與單純的Java小應用相比,創(chuàng)建CORBAJava應用稍顯復雜。事實上,這同樣比用RMI創(chuàng)建純粹的Java分布式對象應用要難一些。但是,CORBA和Java的聯(lián)合,所創(chuàng)建的應用程序功能更為強大,更具可擴充性,這是單純用JDK開發(fā)所無法比擬的。另外,現(xiàn)實是企業(yè)界很少使用Java應用程序。CORBA是兩全其美的選擇,一方面它允許開發(fā)者利用已有的代碼保護投資,另一方面又可以充分發(fā)揮Java編程語言的優(yōu)勢。
5.4 JSP與CORBA技術的結合使用
若想實現(xiàn)Web上分布式客戶機/服務器模式的應用程序,可以選擇多種不同的技術。但是,對于必須服務于大量用戶的應用,我們認為應該首選CORBA,因為它具有可擴展性和業(yè)界廣泛的支持。由于CORBA的強健性可以提高Java編程語言的性能,利用已有的基于標準的技術,Java開發(fā)者可以編寫出功能強大的Web應用程序。
想要對已有的Web軟件資源加以利用,或是編寫真正功能強大的應用程序,使Internet/Intranet成為通信主干,所使用的技術必須具有以下特性:
· 支持現(xiàn)有的C、C++和COBOL代碼
· 支持Java,以建立具有可移值性、平臺獨立性的面向對象的應用程序
· 商業(yè)中立性,只有這樣,應用程序才易于維護,且不會被時間淘汰。
· 可擴充性,能夠支持大量用戶
· 它應該被多種平臺所支持,而不是固定于某種平臺之上。
· 開發(fā)模型應該是面向對象的(因為OOP有許多固有優(yōu)勢)
· 端到端的安全性
· 廣泛的業(yè)界支持
這種技術便是以CORBA為最佳。
Servlets是JAVA 2.0中新增的一個全新功能,它是運行在請求/面向請求服務器上的模塊,比如一個Java-enabled web 服務器, 和類似這樣的延伸場合. 例如, 一個servlet可以從一個HTML訂單表中獲取數(shù)據然后用一些商業(yè)上的算法來更新公司相應的訂單數(shù)據庫。
也就是說:servlet能夠象CGI腳本一樣擴展WEB服務器功能,但是servlet占用很少密集資源,有很多用CGI腳本編制的一些站點由于訪問量劇增,性能迅速下降,這是CGI腳本一個缺點。同時由于servlet是用java編寫的,因此是跨平臺的。可以這樣說,實際servlet是電子商務真正的開始。
跨平臺的Java Servlet與跨語言的corba的強強聯(lián)合,使得開發(fā)者可以編寫出功能強大的Web應用程序。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -