📄 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;
}
}
至此,我们已经写好了所有服务器方必需的代码,下一步的工作是创建客户小应用,初始化客户ORB,进而击活并调用刚刚生成的服务器对象。
4.创建CORBA小应用
正如服务器对象要向服务器ORB登记一样,客户端小应用或应用程序需要向客户机ORB登记。当要获得远程CORBA对象时,客户机采用了一种间接的方法,它通知客户机ORB其意图,由ORB负责ORB到ORB的通讯。这种请求方式由下面两行代码实现(在VisiBrokerforJava中):
//初始化ORB(使用applet)
org.omg.CORBA.ORBorb=org.omg.CORBA.ORB.init(this);
//检索applet要调用的ORBInfo接口对象
ORBInfoQuery=ORBQuery.ORBInfoHelper.bind(orb,"ORBInfo");
执行了bind()方法调用之后,我们的ORBInfoQuery本地变量与服务器的ORBInfo对象绑在一起。这一操作完成之后,我们就可以调用帮助方法来实现客户端小应用。记住,尽管示例中我们完全使用了Java语言,但实际上,服务器对象也可以用其他语言来实现,如: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 生成实现类。
n (functions.java) functinosImpl.java
l 生成实现服务器。
n fooServer.java
l 生成客户机应用程序(或小程序)。
n fooClient.java
l 编译实现服务器和客户机代码。
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小应用相比,创建CORBAJava应用稍显复杂。事实上,这同样比用RMI创建纯粹的Java分布式对象应用要难一些。但是,CORBA和Java的联合,所创建的应用程序功能更为强大,更具可扩充性,这是单纯用JDK开发所无法比拟的。另外,现实是企业界很少使用Java应用程序。CORBA是两全其美的选择,一方面它允许开发者利用已有的代码保护投资,另一方面又可以充分发挥Java编程语言的优势。
5.4 JSP与CORBA技术的结合使用
若想实现Web上分布式客户机/服务器模式的应用程序,可以选择多种不同的技术。但是,对于必须服务于大量用户的应用,我们认为应该首选CORBA,因为它具有可扩展性和业界广泛的支持。由于CORBA的强健性可以提高Java编程语言的性能,利用已有的基于标准的技术,Java开发者可以编写出功能强大的Web应用程序。
想要对已有的Web软件资源加以利用,或是编写真正功能强大的应用程序,使Internet/Intranet成为通信主干,所使用的技术必须具有以下特性:
· 支持现有的C、C++和COBOL代码
· 支持Java,以建立具有可移值性、平台独立性的面向对象的应用程序
· 商业中立性,只有这样,应用程序才易于维护,且不会被时间淘汰。
· 可扩充性,能够支持大量用户
· 它应该被多种平台所支持,而不是固定于某种平台之上。
· 开发模型应该是面向对象的(因为OOP有许多固有优势)
· 端到端的安全性
· 广泛的业界支持
这种技术便是以CORBA为最佳。
Servlets是JAVA 2.0中新增的一个全新功能,它是运行在请求/面向请求服务器上的模块,比如一个Java-enabled web 服务器, 和类似这样的延伸场合. 例如, 一个servlet可以从一个HTML订单表中获取数据然后用一些商业上的算法来更新公司相应的订单数据库。
也就是说:servlet能够象CGI脚本一样扩展WEB服务器功能,但是servlet占用很少密集资源,有很多用CGI脚本编制的一些站点由于访问量剧增,性能迅速下降,这是CGI脚本一个缺点。同时由于servlet是用java编写的,因此是跨平台的。可以这样说,实际servlet是电子商务真正的开始。
跨平台的Java Servlet与跨语言的corba的强强联合,使得开发者可以编写出功能强大的Web应用程序。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -