- 浏览: 370203 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
jiangli19192:
...
自己写的一个启动JBoss服务器的bat批处理 -
56553655:
最好这样:java -Xms3700M -Xmx3700M - ...
测试本机JVM支持的最大内存 -
lizhiy05:
学习一哈……
Web Services体系结构及相关概念 -
ghy200692162:
System.out.println("开始注册Js ...
基于OSGi的JSF Web组件开发问题求解 -
xiao888lin:
你的头像看起来很像我们宿舍老四。。。
测试本机JVM支持的最大内存
随着Internet、Intranet及Extranet在全球范围内的普及和发展,下一代的Web必须能够处理企业-企业(business-to- business)交易和客户-企业(consumer-to-business)多步骤交易过程中的复杂需求。为了实现这一目的,Web必须发展成为一种能够执行在线交易软件的一种成熟的客户机/服务器结构。现在的HTTP/CGI结构存在一些不足,它不能满足上述这些新的要求。而各种不同的CGI扩展规范,例如cookie、Microsoft Internet Services API(ISAPI)、Netscape Server API(NSAPI)以及Active Server page等,也都不能从根本上解决问题。为了能够满足不断发展的电子商务的要求,Web需要有分布式对象的功能。这就导致了人们所称的下一波的 Internet革命──对象化的Web(Object Web)有产生。
建立Object Web的一种可行的方法,是使用COBRA(通用对象请求代理结构, Common Object Request Broker Architecture)和Java。如果没有Object Web的话,对大多数对企业级的客户机/服务器市场有兴趣的厂商,以及喜欢面向对象编程的人而言,CORBA及Java将只不过是一种容易使用的技术而已。因此业界都希望能将COBRA和Java各自的功能结合起来形成一种新的Object Web环境。软件界中除了Microsoft以外几乎所有其它的厂商所组成的联盟都力促COBRA和Java的结合以建立一个通用的Object Web环境。而Microsoft目前也正要据它的ActiveX/DCOM技术建立自己的Object Web环境。本文首先将分别对CORBA和Java进行介绍,接下来将会详述CORBA/Java以及Object Web的各种细节。
首先,那些Java的拥护者必须清楚,CORBA不止是一种对象请求代理(ORB),它同时也是一个非常完整的分布式对象操作平台。CORBA能跨越网路、程序语言、组件界限以及操作系统,因此能够大大扩展Java应用软件的使用范围。
对于那些CORBA的支持者,我们必须要指出的Java也不光只是一套能和CORBA结合的程序语言。Java不仅是一种面向对象的语言,同时也是具备对象功能的可移植性操作系统。Java允许CORBA对象在各种不同的机器上执行,无论是大型机、网路电脑(NC),甚至是蜂窝式电话等。Java简化了大型CORBA系统的程序分发──Java利用字节码使得用户开发的对象能到处运行,这同时也为CORBA便携式代理提供了一个切实可行的方案。现在人们都知道Java几乎是开发客户机/服务器CORBA对象的最理想的语言。它内建的多线程(multithreading)、垃圾收集(garbage collection)及错误管理(error management)功能,使人们可以很容易开发出可靠的面向对象的应用。
这个方案成功的关键在于这两种技术的基础结构能够彼此互补。Java弥补了CORBA的一些不足,而CORBA则可以为Java带来可移植的面向对象的软件环境。
Java和COBRA如何结合
对于如何将COBRA技术和Java技术结合起来,业界并目前没有一个统一的标准。这主要是因为推动COBRA发展的对象管理集团(OMG,Object Management Group)及推动Java发展的JavaSoft之间无法很清楚地划清界线。举个例子来说,当JavaSoft为不同的Java客户端之间,通过虚拟机(VM)的方式建立远程方法革新(Remote Method Invocation,RMI)时,它就已经在许多方面向OMG看齐了。以制定分布式对象标准为己任的OMG当然希望COBRA能成为Java的分布式对象模型,而JavaSoft则希望创建自己的分布式对象模型,但它又迟迟提不出自己的不同于COBRA的对象结构。
不过据称这场分岐可能很快就要结束了。JavaSoft将采纳CORBA做为分布式的对象模型这个模型在OMG的帮助之下,将能够在CORBA/IIOP(Internet Interoperable ORB Protocol)上执行RMI API。今年六月所发布的这个消息,已经对消除CORBA及Java两个阵营之间的分岐起到了明显的效果。接下来我们介绍JavaSoft计划如何将CORBA加入Java的核心中。
Java开发包(Java Development Kit;JDK)1.2版(97年第三季推出),包含一组纯粹由Java所发展的CORBA ORB。这组ORB将是Joe的一小部分,全部以Java开发的ORB将会包含在Sun的NEO这项产品中。此外,JDK 1.2版将会支持Java IDL(Java接口定义语言,Java Interface Definition Language),Java IDL是一套能从IDL中产生出CORBA识别标签及程序框架的开发环境。JDK 1.2版同时也将包含一组完全用Java所开发的CORBA命名服务(Naming Service)。Java RMI将运行在CORBA/IIOP结构上。这意味着JavaSoft将放弃目前所建立的专有ORB结构。
将来的JDK将会支持Enterprise JavaBeans功能。Enterprise Beans将利用CORBA/IIOP以及其它的一些协议来与客户端的Beans进行通信。最重要的是, Enterprise JavaBeans将会支持Java交易服务(Java Transaction Service;JTS)功能,这个功能将建立在CORBA的对象交易服务(Object Transaction Service;OTS)的基础上。
先前宣布的这些消息,对于低端以及高端的CORBA/Java市场有着非常深远的影响。在低端的市场方面,用户不仅可以从JDK提供厂商(即使是Microsoft也有可能)获得免费的CORBA/Java ORB,同时还可取得IDL开发环境。在高端的市场方面,用户将能取得具备交易功能的JavaBeans。交易功能为Beans带来ACID四种保护功能,
亦即不可分割性(Atomic)、一致性(Consistent)、隔离性(Isolated)以及持久性(Durable)。这个功能同时具有连接组件的功能,用户可利用这个功能使各个厂商所开发的Beans达到同步化。因为上述的各种原因,OMG和JavaSoft才有可能求同存异,实现COBRA与Java的顺利结合。
说了半天,读者可能要问,CORBA/Java ORB到底是什么呢?它实际上是为了具备可移植性而完全由Java所开发的CORBA/IIOP ORB。这个ORB必须要能够从CORBA IDL产生出能和Java语言相连结的组件。除此之外,由这个IDL编译器所产生的程序代码,必须完全由Java语言所组成,使用者只要下载这些程序码后,就能在任何具备Java运行环境的机器上运行。
现在已经有三家公司推出了符合这些条件的ORB,它们分别是Sun的Joe、Iona的OrbixWeb以及Visigenic/Netscape的VisiBroker for Java。这三个ORB都得到了许多厂商的强力支持。Joe将会包含在JDK 1.2版中。OrbixWeb是ORB开发厂商的龙头老大Iona所推出的产品。VisiBroker for Java这套产品目前不但随着Netscape Communicator及Enterprise Server一起推出,而且也即将附加在Oracle的asp.cn/ class=wordstyle>网络计算结构(Network Computing Architecture,NCA)、Sybase的Jaguar,以及Novell的InternetWare等三项产品中。除了这些纯粹由Java所发展的ORB之外,许多由C++所开发出来的ORB现在也提供了与Java的结合能力,例如Expersoft的PowerBroker、IBM的Component Broker及BEA即将推出的ObjectBroker等就是这样的产品。
Web功能难以割舍
Web起初只是一个用来出版及广播静态电子文件的一个媒体。w就基本功能而言,它只不过是一个以存放URL文件为主的巨型档案服务器。到了1995年后期,随著三层客户机/服务器CGI结构的推出,它才开始具备一些基本的交互操作功能。CGI目前已经应用在各种服务器环境中。
CGI的HTTP结构使用起来不仅效率很低而且无法认证,同时它也不适用于开发目前流行的客户机/服务器应用程序。对具备面对对功能的Java客户端程序来讲, CGI并不是一种很合适的选择。为了打破HTTP/CGI的这些限制,Web服务器的开发厂商在这方面下了很大的功夫。厂商所研究出来的解决方案,通常是以他们专用的服务器扩展功能及新的API的方式表现出来的,如NSAPI、ISAPI、Next的WebObject以及WinCGI等。
为了解决HTTP无法认证的问题,部分扩展规范要求客户端浏览器通过cookie(存在客户端的一些服务器信息)技术来实现认证的要求。其他的规范则更进一步的利用服务器端交易对象的特性来扩充cookie的功能,并且使用交易对象来代表使用者。然而这些尝试大部分都只符合特定的结构,而且还存在很严重的缺陷。
此外,CGI的执行速度很慢。每当接到一个新的客户端请求时,CGI都会产生一个新的运行过程来满意这个请求。为了解决这个不足,许多厂商提出的扩展规范都提供了常驻内存的工作模式,例如DLL方式的执行程序(In-process DLL)、服务器plug-in、甚至是以ORB为基础的对象等。一般而言,为了有效的处理客户端的请求,服务器端会不计一切代价的将这个服务程序保留在内存中。但这样又会带来扩展规范标准不统一(或要求特殊操作平台)的问题。
上面这些建议最主要的问题在于他们需要通过HTTP及Web服务器来调节客户端及服务器上所执行的对象。在客户端上的对象不能直接使用服务器上的对象。我们知道,使用HTTP表格只不过是客户机/服务器交互操作最基本的一个要求。但这种笨拙的操作模式并不适用于成熟的客户机/服务器应用软件,因为这些软件中的组件要求具有很强的交互操作性。此外,这种操作模式也没有弹性。
到了1996年,Web终于开始具有了对象功能。Java applet是迈向开发客户机/服务器结构Object Web的第一步。在发展Object Web的过程上,虽然Java是必要可少的部分但但光有Java却还是不够的。Java需要具有分布式的基础设施才能变得更完整,而CORBA则刚好能弥补Java的这个不足。
1997年6月,随着CORBA/Java ORB与Netscape Communicator一起面世,但意味着Object Web真正的诞生了。在Web服务器软件方面,每一套Netscape Enterprise Server 3.0版都同时包含有CORBA/C++及CORBA/Java这两种ORB一起出售。Java及CORBA交互操作的对象技术,是Object Web发展的第一个步骤。
Object Web中的交互操作
在Object Web结构中,以Web为基础的客户端及服务器间的交互操作关系变得十分的简单∶
1、Web浏览器下载用HTML编写的网页文件。在这种要求下,这个文件中将同时包含与Java applet的连结。
2、Web浏览器从HTTP服务器中下载Java applet。HTTP服务器取得这些applet,并以字节码的型式将applet传送给浏览器。
3、Web浏览器载入applet。这些applet必须先通过Java的安全检查,才会下载到本地硬盘上。
4、Applet对CORBA服务器提出对象服务请求。Java applet中可以包含由IDL所产生的客户端识别标签,利用这个识别标签,applet就可以对CORBA服务器上的对象提出服务请求。Java applet以及CORBA对象之间的通信连接可以持续存在,直到任何一方决定中断连接。需注意的是要达到这项功能,用户必须使用具备IIOP功能的防火墙(firewall)设备。目前,由Iona所推出的WonderWall是唯一符合这一要求的产品。不久Netscape也很有可能将推出IIOP防火墙设备。
5、服务器上的对象能够选择性地为用户产生下一页的HTML文件。当服务器准备好下一页文件后,它会通知客户端浏览器到特定的URL位址去下载这一页文件。
从Object Web结构来看,服务器通常不需要具备动态产生网页的功能。要在客户端上执行的软件会以单一HTML网页、内含象applet(或是Object标签中的JavaBeans)组件的方式封装起来。与HTTP/CGI结构相比,CORBA让使用者能快速地与服务器实现并互操作的效果,使用者只需用鼠标单击HTML文件的组件,而不需要再切换到不同的网页就能获得实现交互操作的目的。
CORBA/Java扩展Web结构
利用CORBA/Java来扩展Web基本结构可立即看到下面两个好处∶
1、CORBA避开了CGI的瓶颈困境。CORBA允许客户端程序直接调用服务器上的对象方法。客户端程序利用事先编译过的识别标签,直接将执行时所需要的参数传送给服务器,或是利用服务器上的CORBA动态请求服务程序,立即产生所需的参数。无论是那一种方式,服务器都会利用事先编译好的框架程序,直接接收客户端的服务请求。使用者可以调用服务器上任何一组由IDL定义出来的对象程序,而不光只是HTTP定义的服务程序。此外,使用者还可以传递任何形式的参数类别,而不再只局限于字符串型的参数。这说明这种结构对客户机/服务器环境的负载会很小,尤其是和原来HTTP/CGI的结构相比效果更为明显。
2、CORBA提供了一种伸缩性很强的服务器与服务器之间进行通信的结构。每个服务器上的通信对象都可以利用CORBA ORB来相互通信。这些对象可以同时在多个服务器上执行,以便使来自客户端的各种服务请求能达到负载平衡。ORB会将服务请求分配给第一个可用的对象,同时会随着请求的增加而增加新的对象。通过对通信进行限制和相关的CORBA服务程序,CORBA允许服务器上的对象能以一致的行为来运行。而CGI应用程序会造成系统功能的瓶颈,因为它必须处理成千上万的服务需求。CGI不能将这些负载分散到不同的处理程序或是不同的处理器上执行。
三层式CORBA/Java Object Web
Object Web上每个新的应用程序,都将设计或封装成组件的型式。用户可以在CORBA IDL中利用对象的接口来封装现有的程序代码。几乎每一种程序语言所编写出来的程序代码都能重新封装。举例来说,利用CORBA,用户可以像变魔术一样的使一百多万行COBOL程序看起来像是一个对象。任何由IDL所创建的对象,都能够以初始类别(first class)的方式运用在Object Web中。这种方法之所以能成功,是因为CORBA同Java一样,将对象的接口和对象的运行分得很清楚。
一些主要的asp.cn/ class=wordstyle>电脑公司,包括Sun、IBM/Lotus、Netscape、Oracle、Sybase、Novell以及BEA等,都非常看好Object Web这个重量级的应用软件。这些公司同时选择CORBA/IIOP及JavaBeans作为与公司其它产品之间立即可使用的高级软件沟通方案。下面我们通过三层式结构(three-tier)的客户机/服务器结构来详细介绍一下Object Web。
◆客户端(client)
结构中的第一层是由传统的Web浏览器及全新以Web为中心的桌面环境构成。相对于如今静态的网页而言,这些新对象将更能代表真实世界事物的样子。举例来说,用户将可以看到对象容器中包含有人、物体以及其它的对象容器。这个动态的网页内容,是由装载着可移动式对象容器的便携式容器软件内嵌的JavaBeans运行所产生的整体效果,像HTML网页或Jars等都可以算是便携式的容器软件。用户可以利用拖拉的动作或直接操作表格的方法来与这些对象达到交互操作的效果。位于客户端的Beans不仅可以和容器软件中其它客户端的Beans交互操作,同时也能和服务器上的Beans交互操作。
此外,利用CORBA的事件或回叫(callback)模式,服务器上的Beans将可以直接调用客户端的对象程序。浏览器可以利用HTTP协议来下载Web网页、Jars以及图象文件等,而使用CORBA作为Java客户端到服务器,以及服务器到客户端的传输协议。
◆中间层(middle tier)
结构中的中间层运行在每个服务器上,其主要的功能是为HTTP及CORBA客户端提供服务。几乎每种操作平台上的服务器都支持CORBA/HTTP这两种组合功能,如Unix、NT、OS/2、NetWare、MacOS、OS/400、MVS及Tandem NonStop Kernel等
CORBA对象将商业原则(business logic)封装到对象中,并在这个结构中起着中间接口应用程序服务器的作用,这些CORBA对象最后很有可能被封装成Enterprise JavaBeans。这些对象利用CORBA/IIOP与客户端的JavaBeans进行交互操作。一些可伸缩性差一些的软件,也可以利用HTML服务器网页上的script功能来调用这些对象。举例来说,Netscape的Web应用接口(Web Application Interface,WAI)就可以对应用软件提供这种服务。
服务器上的CORBA对象会利用CORBA ORB来与其他服务器上的对象进行交互操作。这些对象也可以利用SQL/JDBC(Java数据库互连)或其它中间件(Middleware)来与第三层结构中现有的服务器应用软件通信。用户甚至还可以使用CORBA/IIOP服务器主干来作为普通数据的传送通道。这就是Oracle用来建立数据Plug-in的技术。
现在I-Kinetics及Visigenic这两家公司,也推出了能将JDBC运用在IIOP上的数据传输软件。
中间层的这个结构同时也必须提供服务器端“组件协调者(component coordinator)”的功能,这项功能也称为对象的TP纠察员(TP monitor)。这些组件协调者实际上是建立在ORB上的TP monitor。这些组件协调者不是用来管理远程的程序,而是用来管理对象。组件协调者会预先改变对象的共同成员、平衡对象的负载、提供容错的能力,并且协调多个组件之间的通信行为。如果没有组件协调者的话,根本无法管理服务器中成千上万的对象,而这项管理的功能却又是Object Web所需具备的能力。
在以CORBA为基础的组件协调者中,比较有名的是IBM的Component Broker及BEA的Tuxedo/Iceberg。服务器端的组件是是一种包含一小部分组件服务功能CORBA服务器对象。Oracle的 Cartridge可算是这种组件中最具代表性的例子。Cartridge是著名的CORBA对象,它同时具有通信功能和保密功能,而且还能激发特定的事件。
用户可以对服务器端的组件进行可视化装配。这说明只要通过组件本身所提供的连结接口,用户就能利用可觉化工具软件将这些组件集成在一起。将来CORBA化的Enterprise JavaBeans中将提供服务器端组件的可视化装配功能。CORBA/JavaBean的这项技术已经集成到由Symantec、Penumbra、ParcPlace、IBM/Taligent、Borland及Sybase等公司所推出的可视化开发工具中。
在CORBA/Java Object Web结构中的第二层,还必须具备能够存储组件名称、HTML网页及便携式对象容器的能力。这些对象可以存储在便携式的Java Jars中,并且通过面向对象的数据库管理系统(ODBMS)或传统的数据库管理系统(DBMS)来进行管理,不过使用面向对象的数据库管理系统要更合适一些。
◆后端服务器(back end)
任何一种CORBA对象能够访问的资源,都可以算是此结构第三层的一部分。这包括程序性的TP monitor、中间件(middleware)、数据库管理系统、面向对象的数据库管理系统、Lotus Notes和电子邮件等。这样一来,利用CORBA对象来取代中间层中的CGI程序才能收到良好的效果。最后用户将可以取得封装大部分三层功能的CORBA/Java组件,这样就可以充分发挥CORBA的作用了。
结束语
CORBA和Java为Object Web上各种产品的集成起着沾合剂的作用。这是软件工业界中第一个尝试即插即用(plug-and-play)功能的软件,而这个功能则是开放系统最终希望实现的。
在其他厂商发展Object Web的同时,软件业的大腕Microsoft也不会甘于寂寞,它正努力的以自己的方式来诠释并试图主导Object Web的发展方向,而它所用的方法则是DCOM及ActiveX。Microsoft的Transaction Server(代号Viper)是一套DCOM组件协调软件,它是Microsoft计划用来统治Object Web的秘密武器。不过目前看来,Microsoft的Web环境还远不够成熟。相信随着Microsoft的Web环境的进一步发展,未来Object Web领域的竞争将会日趋激烈。
建立Object Web的一种可行的方法,是使用COBRA(通用对象请求代理结构, Common Object Request Broker Architecture)和Java。如果没有Object Web的话,对大多数对企业级的客户机/服务器市场有兴趣的厂商,以及喜欢面向对象编程的人而言,CORBA及Java将只不过是一种容易使用的技术而已。因此业界都希望能将COBRA和Java各自的功能结合起来形成一种新的Object Web环境。软件界中除了Microsoft以外几乎所有其它的厂商所组成的联盟都力促COBRA和Java的结合以建立一个通用的Object Web环境。而Microsoft目前也正要据它的ActiveX/DCOM技术建立自己的Object Web环境。本文首先将分别对CORBA和Java进行介绍,接下来将会详述CORBA/Java以及Object Web的各种细节。
首先,那些Java的拥护者必须清楚,CORBA不止是一种对象请求代理(ORB),它同时也是一个非常完整的分布式对象操作平台。CORBA能跨越网路、程序语言、组件界限以及操作系统,因此能够大大扩展Java应用软件的使用范围。
对于那些CORBA的支持者,我们必须要指出的Java也不光只是一套能和CORBA结合的程序语言。Java不仅是一种面向对象的语言,同时也是具备对象功能的可移植性操作系统。Java允许CORBA对象在各种不同的机器上执行,无论是大型机、网路电脑(NC),甚至是蜂窝式电话等。Java简化了大型CORBA系统的程序分发──Java利用字节码使得用户开发的对象能到处运行,这同时也为CORBA便携式代理提供了一个切实可行的方案。现在人们都知道Java几乎是开发客户机/服务器CORBA对象的最理想的语言。它内建的多线程(multithreading)、垃圾收集(garbage collection)及错误管理(error management)功能,使人们可以很容易开发出可靠的面向对象的应用。
这个方案成功的关键在于这两种技术的基础结构能够彼此互补。Java弥补了CORBA的一些不足,而CORBA则可以为Java带来可移植的面向对象的软件环境。
Java和COBRA如何结合
对于如何将COBRA技术和Java技术结合起来,业界并目前没有一个统一的标准。这主要是因为推动COBRA发展的对象管理集团(OMG,Object Management Group)及推动Java发展的JavaSoft之间无法很清楚地划清界线。举个例子来说,当JavaSoft为不同的Java客户端之间,通过虚拟机(VM)的方式建立远程方法革新(Remote Method Invocation,RMI)时,它就已经在许多方面向OMG看齐了。以制定分布式对象标准为己任的OMG当然希望COBRA能成为Java的分布式对象模型,而JavaSoft则希望创建自己的分布式对象模型,但它又迟迟提不出自己的不同于COBRA的对象结构。
不过据称这场分岐可能很快就要结束了。JavaSoft将采纳CORBA做为分布式的对象模型这个模型在OMG的帮助之下,将能够在CORBA/IIOP(Internet Interoperable ORB Protocol)上执行RMI API。今年六月所发布的这个消息,已经对消除CORBA及Java两个阵营之间的分岐起到了明显的效果。接下来我们介绍JavaSoft计划如何将CORBA加入Java的核心中。
Java开发包(Java Development Kit;JDK)1.2版(97年第三季推出),包含一组纯粹由Java所发展的CORBA ORB。这组ORB将是Joe的一小部分,全部以Java开发的ORB将会包含在Sun的NEO这项产品中。此外,JDK 1.2版将会支持Java IDL(Java接口定义语言,Java Interface Definition Language),Java IDL是一套能从IDL中产生出CORBA识别标签及程序框架的开发环境。JDK 1.2版同时也将包含一组完全用Java所开发的CORBA命名服务(Naming Service)。Java RMI将运行在CORBA/IIOP结构上。这意味着JavaSoft将放弃目前所建立的专有ORB结构。
将来的JDK将会支持Enterprise JavaBeans功能。Enterprise Beans将利用CORBA/IIOP以及其它的一些协议来与客户端的Beans进行通信。最重要的是, Enterprise JavaBeans将会支持Java交易服务(Java Transaction Service;JTS)功能,这个功能将建立在CORBA的对象交易服务(Object Transaction Service;OTS)的基础上。
先前宣布的这些消息,对于低端以及高端的CORBA/Java市场有着非常深远的影响。在低端的市场方面,用户不仅可以从JDK提供厂商(即使是Microsoft也有可能)获得免费的CORBA/Java ORB,同时还可取得IDL开发环境。在高端的市场方面,用户将能取得具备交易功能的JavaBeans。交易功能为Beans带来ACID四种保护功能,
亦即不可分割性(Atomic)、一致性(Consistent)、隔离性(Isolated)以及持久性(Durable)。这个功能同时具有连接组件的功能,用户可利用这个功能使各个厂商所开发的Beans达到同步化。因为上述的各种原因,OMG和JavaSoft才有可能求同存异,实现COBRA与Java的顺利结合。
说了半天,读者可能要问,CORBA/Java ORB到底是什么呢?它实际上是为了具备可移植性而完全由Java所开发的CORBA/IIOP ORB。这个ORB必须要能够从CORBA IDL产生出能和Java语言相连结的组件。除此之外,由这个IDL编译器所产生的程序代码,必须完全由Java语言所组成,使用者只要下载这些程序码后,就能在任何具备Java运行环境的机器上运行。
现在已经有三家公司推出了符合这些条件的ORB,它们分别是Sun的Joe、Iona的OrbixWeb以及Visigenic/Netscape的VisiBroker for Java。这三个ORB都得到了许多厂商的强力支持。Joe将会包含在JDK 1.2版中。OrbixWeb是ORB开发厂商的龙头老大Iona所推出的产品。VisiBroker for Java这套产品目前不但随着Netscape Communicator及Enterprise Server一起推出,而且也即将附加在Oracle的asp.cn/ class=wordstyle>网络计算结构(Network Computing Architecture,NCA)、Sybase的Jaguar,以及Novell的InternetWare等三项产品中。除了这些纯粹由Java所发展的ORB之外,许多由C++所开发出来的ORB现在也提供了与Java的结合能力,例如Expersoft的PowerBroker、IBM的Component Broker及BEA即将推出的ObjectBroker等就是这样的产品。
Web功能难以割舍
Web起初只是一个用来出版及广播静态电子文件的一个媒体。w就基本功能而言,它只不过是一个以存放URL文件为主的巨型档案服务器。到了1995年后期,随著三层客户机/服务器CGI结构的推出,它才开始具备一些基本的交互操作功能。CGI目前已经应用在各种服务器环境中。
CGI的HTTP结构使用起来不仅效率很低而且无法认证,同时它也不适用于开发目前流行的客户机/服务器应用程序。对具备面对对功能的Java客户端程序来讲, CGI并不是一种很合适的选择。为了打破HTTP/CGI的这些限制,Web服务器的开发厂商在这方面下了很大的功夫。厂商所研究出来的解决方案,通常是以他们专用的服务器扩展功能及新的API的方式表现出来的,如NSAPI、ISAPI、Next的WebObject以及WinCGI等。
为了解决HTTP无法认证的问题,部分扩展规范要求客户端浏览器通过cookie(存在客户端的一些服务器信息)技术来实现认证的要求。其他的规范则更进一步的利用服务器端交易对象的特性来扩充cookie的功能,并且使用交易对象来代表使用者。然而这些尝试大部分都只符合特定的结构,而且还存在很严重的缺陷。
此外,CGI的执行速度很慢。每当接到一个新的客户端请求时,CGI都会产生一个新的运行过程来满意这个请求。为了解决这个不足,许多厂商提出的扩展规范都提供了常驻内存的工作模式,例如DLL方式的执行程序(In-process DLL)、服务器plug-in、甚至是以ORB为基础的对象等。一般而言,为了有效的处理客户端的请求,服务器端会不计一切代价的将这个服务程序保留在内存中。但这样又会带来扩展规范标准不统一(或要求特殊操作平台)的问题。
上面这些建议最主要的问题在于他们需要通过HTTP及Web服务器来调节客户端及服务器上所执行的对象。在客户端上的对象不能直接使用服务器上的对象。我们知道,使用HTTP表格只不过是客户机/服务器交互操作最基本的一个要求。但这种笨拙的操作模式并不适用于成熟的客户机/服务器应用软件,因为这些软件中的组件要求具有很强的交互操作性。此外,这种操作模式也没有弹性。
到了1996年,Web终于开始具有了对象功能。Java applet是迈向开发客户机/服务器结构Object Web的第一步。在发展Object Web的过程上,虽然Java是必要可少的部分但但光有Java却还是不够的。Java需要具有分布式的基础设施才能变得更完整,而CORBA则刚好能弥补Java的这个不足。
1997年6月,随着CORBA/Java ORB与Netscape Communicator一起面世,但意味着Object Web真正的诞生了。在Web服务器软件方面,每一套Netscape Enterprise Server 3.0版都同时包含有CORBA/C++及CORBA/Java这两种ORB一起出售。Java及CORBA交互操作的对象技术,是Object Web发展的第一个步骤。
Object Web中的交互操作
在Object Web结构中,以Web为基础的客户端及服务器间的交互操作关系变得十分的简单∶
1、Web浏览器下载用HTML编写的网页文件。在这种要求下,这个文件中将同时包含与Java applet的连结。
2、Web浏览器从HTTP服务器中下载Java applet。HTTP服务器取得这些applet,并以字节码的型式将applet传送给浏览器。
3、Web浏览器载入applet。这些applet必须先通过Java的安全检查,才会下载到本地硬盘上。
4、Applet对CORBA服务器提出对象服务请求。Java applet中可以包含由IDL所产生的客户端识别标签,利用这个识别标签,applet就可以对CORBA服务器上的对象提出服务请求。Java applet以及CORBA对象之间的通信连接可以持续存在,直到任何一方决定中断连接。需注意的是要达到这项功能,用户必须使用具备IIOP功能的防火墙(firewall)设备。目前,由Iona所推出的WonderWall是唯一符合这一要求的产品。不久Netscape也很有可能将推出IIOP防火墙设备。
5、服务器上的对象能够选择性地为用户产生下一页的HTML文件。当服务器准备好下一页文件后,它会通知客户端浏览器到特定的URL位址去下载这一页文件。
从Object Web结构来看,服务器通常不需要具备动态产生网页的功能。要在客户端上执行的软件会以单一HTML网页、内含象applet(或是Object标签中的JavaBeans)组件的方式封装起来。与HTTP/CGI结构相比,CORBA让使用者能快速地与服务器实现并互操作的效果,使用者只需用鼠标单击HTML文件的组件,而不需要再切换到不同的网页就能获得实现交互操作的目的。
CORBA/Java扩展Web结构
利用CORBA/Java来扩展Web基本结构可立即看到下面两个好处∶
1、CORBA避开了CGI的瓶颈困境。CORBA允许客户端程序直接调用服务器上的对象方法。客户端程序利用事先编译过的识别标签,直接将执行时所需要的参数传送给服务器,或是利用服务器上的CORBA动态请求服务程序,立即产生所需的参数。无论是那一种方式,服务器都会利用事先编译好的框架程序,直接接收客户端的服务请求。使用者可以调用服务器上任何一组由IDL定义出来的对象程序,而不光只是HTTP定义的服务程序。此外,使用者还可以传递任何形式的参数类别,而不再只局限于字符串型的参数。这说明这种结构对客户机/服务器环境的负载会很小,尤其是和原来HTTP/CGI的结构相比效果更为明显。
2、CORBA提供了一种伸缩性很强的服务器与服务器之间进行通信的结构。每个服务器上的通信对象都可以利用CORBA ORB来相互通信。这些对象可以同时在多个服务器上执行,以便使来自客户端的各种服务请求能达到负载平衡。ORB会将服务请求分配给第一个可用的对象,同时会随着请求的增加而增加新的对象。通过对通信进行限制和相关的CORBA服务程序,CORBA允许服务器上的对象能以一致的行为来运行。而CGI应用程序会造成系统功能的瓶颈,因为它必须处理成千上万的服务需求。CGI不能将这些负载分散到不同的处理程序或是不同的处理器上执行。
三层式CORBA/Java Object Web
Object Web上每个新的应用程序,都将设计或封装成组件的型式。用户可以在CORBA IDL中利用对象的接口来封装现有的程序代码。几乎每一种程序语言所编写出来的程序代码都能重新封装。举例来说,利用CORBA,用户可以像变魔术一样的使一百多万行COBOL程序看起来像是一个对象。任何由IDL所创建的对象,都能够以初始类别(first class)的方式运用在Object Web中。这种方法之所以能成功,是因为CORBA同Java一样,将对象的接口和对象的运行分得很清楚。
一些主要的asp.cn/ class=wordstyle>电脑公司,包括Sun、IBM/Lotus、Netscape、Oracle、Sybase、Novell以及BEA等,都非常看好Object Web这个重量级的应用软件。这些公司同时选择CORBA/IIOP及JavaBeans作为与公司其它产品之间立即可使用的高级软件沟通方案。下面我们通过三层式结构(three-tier)的客户机/服务器结构来详细介绍一下Object Web。
◆客户端(client)
结构中的第一层是由传统的Web浏览器及全新以Web为中心的桌面环境构成。相对于如今静态的网页而言,这些新对象将更能代表真实世界事物的样子。举例来说,用户将可以看到对象容器中包含有人、物体以及其它的对象容器。这个动态的网页内容,是由装载着可移动式对象容器的便携式容器软件内嵌的JavaBeans运行所产生的整体效果,像HTML网页或Jars等都可以算是便携式的容器软件。用户可以利用拖拉的动作或直接操作表格的方法来与这些对象达到交互操作的效果。位于客户端的Beans不仅可以和容器软件中其它客户端的Beans交互操作,同时也能和服务器上的Beans交互操作。
此外,利用CORBA的事件或回叫(callback)模式,服务器上的Beans将可以直接调用客户端的对象程序。浏览器可以利用HTTP协议来下载Web网页、Jars以及图象文件等,而使用CORBA作为Java客户端到服务器,以及服务器到客户端的传输协议。
◆中间层(middle tier)
结构中的中间层运行在每个服务器上,其主要的功能是为HTTP及CORBA客户端提供服务。几乎每种操作平台上的服务器都支持CORBA/HTTP这两种组合功能,如Unix、NT、OS/2、NetWare、MacOS、OS/400、MVS及Tandem NonStop Kernel等
CORBA对象将商业原则(business logic)封装到对象中,并在这个结构中起着中间接口应用程序服务器的作用,这些CORBA对象最后很有可能被封装成Enterprise JavaBeans。这些对象利用CORBA/IIOP与客户端的JavaBeans进行交互操作。一些可伸缩性差一些的软件,也可以利用HTML服务器网页上的script功能来调用这些对象。举例来说,Netscape的Web应用接口(Web Application Interface,WAI)就可以对应用软件提供这种服务。
服务器上的CORBA对象会利用CORBA ORB来与其他服务器上的对象进行交互操作。这些对象也可以利用SQL/JDBC(Java数据库互连)或其它中间件(Middleware)来与第三层结构中现有的服务器应用软件通信。用户甚至还可以使用CORBA/IIOP服务器主干来作为普通数据的传送通道。这就是Oracle用来建立数据Plug-in的技术。
现在I-Kinetics及Visigenic这两家公司,也推出了能将JDBC运用在IIOP上的数据传输软件。
中间层的这个结构同时也必须提供服务器端“组件协调者(component coordinator)”的功能,这项功能也称为对象的TP纠察员(TP monitor)。这些组件协调者实际上是建立在ORB上的TP monitor。这些组件协调者不是用来管理远程的程序,而是用来管理对象。组件协调者会预先改变对象的共同成员、平衡对象的负载、提供容错的能力,并且协调多个组件之间的通信行为。如果没有组件协调者的话,根本无法管理服务器中成千上万的对象,而这项管理的功能却又是Object Web所需具备的能力。
在以CORBA为基础的组件协调者中,比较有名的是IBM的Component Broker及BEA的Tuxedo/Iceberg。服务器端的组件是是一种包含一小部分组件服务功能CORBA服务器对象。Oracle的 Cartridge可算是这种组件中最具代表性的例子。Cartridge是著名的CORBA对象,它同时具有通信功能和保密功能,而且还能激发特定的事件。
用户可以对服务器端的组件进行可视化装配。这说明只要通过组件本身所提供的连结接口,用户就能利用可觉化工具软件将这些组件集成在一起。将来CORBA化的Enterprise JavaBeans中将提供服务器端组件的可视化装配功能。CORBA/JavaBean的这项技术已经集成到由Symantec、Penumbra、ParcPlace、IBM/Taligent、Borland及Sybase等公司所推出的可视化开发工具中。
在CORBA/Java Object Web结构中的第二层,还必须具备能够存储组件名称、HTML网页及便携式对象容器的能力。这些对象可以存储在便携式的Java Jars中,并且通过面向对象的数据库管理系统(ODBMS)或传统的数据库管理系统(DBMS)来进行管理,不过使用面向对象的数据库管理系统要更合适一些。
◆后端服务器(back end)
任何一种CORBA对象能够访问的资源,都可以算是此结构第三层的一部分。这包括程序性的TP monitor、中间件(middleware)、数据库管理系统、面向对象的数据库管理系统、Lotus Notes和电子邮件等。这样一来,利用CORBA对象来取代中间层中的CGI程序才能收到良好的效果。最后用户将可以取得封装大部分三层功能的CORBA/Java组件,这样就可以充分发挥CORBA的作用了。
结束语
CORBA和Java为Object Web上各种产品的集成起着沾合剂的作用。这是软件工业界中第一个尝试即插即用(plug-and-play)功能的软件,而这个功能则是开放系统最终希望实现的。
在其他厂商发展Object Web的同时,软件业的大腕Microsoft也不会甘于寂寞,它正努力的以自己的方式来诠释并试图主导Object Web的发展方向,而它所用的方法则是DCOM及ActiveX。Microsoft的Transaction Server(代号Viper)是一套DCOM组件协调软件,它是Microsoft计划用来统治Object Web的秘密武器。不过目前看来,Microsoft的Web环境还远不够成熟。相信随着Microsoft的Web环境的进一步发展,未来Object Web领域的竞争将会日趋激烈。
发表评论
-
让mybatis支持管理和操作多个不同的业务数据库实例
2017-05-07 21:25 6398在微服务大行其道的今天,一个工程中同时操作多个不同的业务数 ... -
Spring Acegi鉴权管理之基础模式(BASIC)
2017-05-01 01:25 1099Acegi久负盛名,这个家伙是一个spring中广泛使用的认 ... -
Restful架构服务构建指南
2017-04-17 01:19 540REST定位为“分布式超媒体应用(Distributed H ... -
集成ibatis的spring工程升级到spring4.0实操手册
2017-04-03 21:57 3290Spring4及已经的版本放弃了对ibatis的集成支持, ... -
Docker使用之Java web应用部署
2017-03-26 13:50 4041此篇博客一部分内容 ... -
Java设计设计模式之桥接模式(Bridge)
2017-03-11 19:19 0... -
Java设计设计模式之组合模式(Composition)
2017-03-11 17:32 1083那王麻子自从做了肉夹馍生意后,真是风生水起,分店开的跟下饺 ... -
Java设计设计模式之适配器模式(Adaptor)
2017-03-05 15:29 1550我的博客自从2008年以 ... -
RBAC原理介绍及开源框架kasai使用分析
2008-08-13 16:20 10558RBAC 模型作为目前 ... -
用Maven Plug-In来构建Corba开发环境
2008-03-21 10:49 3059这两天研究Corba,总是感觉需要在Java的命令行执行“id ... -
LDAP介绍
2008-03-18 09:57 16581.1. LDAP是什么 LDAP是轻量目录访问协议,英文全称 ... -
Drools规则引擎应用总结
2008-02-01 10:07 0package com.playphone.qc.workfl ... -
详解Axis2实现Web Services之ADB篇
2007-07-17 22:35 10019构建一个新的Web Services服务,会有很多种不同的方法 ... -
详解Axis2实现Web Services之AXIOM篇
2007-07-17 22:30 6972AXIOM——AXis 对象模型(AXis Object M ... -
详解Axis2实现Web Services之POJOs篇
2007-07-17 22:25 5338在Axis2对Web Services的众多实现方式中,POJ ... -
Web Services体系结构及相关概念
2007-07-17 22:20 3898Web Services体系结构是面向对象分析与设计(OOA ... -
Spring包结构以及各个包之间引用关系说明
2007-07-17 22:02 5161Spring 包结构说明: spring.jar 包含 ... -
从Hello World开始深入Ajax
2007-07-17 21:11 16281. 初始化XMLHttpRequest对象 ... -
在Javascript中用来获取页面焦点信息
2007-07-17 16:59 4218在Javascript中用来获取页 ... -
详解Hibernate与WebService结合使用
2007-07-17 16:58 2500以前一直在研究EJB和Struts,最近开始研究Hiber ...
相关推荐
在标签中,“corba__java java_corba corba”,强调了这是关于Java与CORBA的结合使用。这意味着压缩包里的内容可能包括了Java接口定义语言(Interface Definition Language, IDL)、ORB的配置文件、服务器端和客户端...
Java与CORBA的结合为开发者提供了一个强大而灵活的工具集,用于构建复杂的企业级分布式应用。通过对关键技术和应用场景的深入理解,开发者可以充分利用这两种技术的优点,构建出既高效又可靠的应用系统。随着技术的...
### Java与Corba客户服务器编程2 #### 一、Java与CORBA简介 **Java**是一种广泛使用的面向对象编程语言,以其跨平台性而闻名...随着技术的发展,Java与CORBA的应用场景也在不断扩展,未来还有更多的可能性等待探索。
- **由IDL生成Java文件(idl.bat)**:使用IDLC工具将idl文件转换为Java源代码,包括存根类和骨架类。 - **启动服务器(ts.bat)**:启动服务器进程,通常会包含ORB的初始化和对象的注册。 - **启动客户端(tc.bat)**:...
对于需要高可靠性和可扩展性的应用,JAVA与CORBA的组合提供了强大的技术支持。 #### 三、JAVA CORBA应用实例:服务端与客户端搭建 在搭建JAVA CORBA服务端与客户端的过程中,以下步骤是基本的流程: 1. **定义IDL...
4. **Java to CORBA 桥接**:除了基本的集成之外,还可以通过桥接技术,让 Java 应用无需直接了解底层的 CORBA 细节,即可与基于其他语言(如 C++、Python 等)的 CORBA 对象进行通信。这通常涉及到代理对象的创建和...
在Java中实现CORBA,主要依赖于Java IDL(Interface Definition Language)和JDK中的CORBA库。Java IDL允许将接口定义为IDL文件,然后这些接口可以被编译成Java接口,使得Java对象能够符合CORBA规范。CORBA库则提供...
### Java IDL 与 CORBA #### 引言 在版本1.2的Java 2平台中引入了Java IDL,它提供了一个接口,用于连接Java程序与通过Common Object Request Broker Architecture (CORBA)构建的分布式对象和服务。CORBA由Object ...
JCORBA是Java对Common Object Request Broker Architecture(CORBA)规范的实现,它允许Java应用程序与其他支持CORBA标准的系统进行互操作。 首先,文章提到了Java语言在互联网应用中的重要性,因其易用性、跨平台...
结合Java和CORBA技术,可以极大地提升Lotus Domino应用的性能和功能。例如,通过使用Java编写CORBA客户端和服务器端组件,可以创建高度灵活和可定制的远程服务接口,实现数据和服务的远程访问。这种整合还支持异构...
#### 二、Java与CORBA结合的优势 - **平台无关性**:利用Java的跨平台特性,结合CORBA的中间件能力,可以在不同的操作系统上实现无缝集成。 - **易于扩展**:CORBA提供了一种灵活的方式,使得系统的扩展变得更加...
Java开发中的CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是一个开放标准,它允许不同系统间的软件对象进行交互,就像它们都在同一内存空间内运行一样。这个技术在分布式计算环境...
Java CORBA技术详解 在IT领域,分布式计算是不可或缺的一部分,而CORBA(Common Object Request Broker Architecture,公共对象请求代理架构)就是一种重要的分布式计算标准。这个“CORBA.rar”压缩包包含了一些...
Java CORBA 客户端 服务器 编程 第二版
### Java_CORBA编程技术知识点详解 #### 一、关于CORBA CORBA(Common Object Request Broker Architecture,通用对象请求代理体系结构)是一种由OMG(Object Management Group)组织制定的标准分布式对象模型。...
具体到RMI_CORBA,这是Java中实现CORBA的一种方式,即通过Java RMI与CORBA的结合,提供了一种在Java应用程序中使用CORBA服务的方法。Java RMI允许Java对象通过网络进行通信,而CORBA则扩展了这种能力,使其能够与...
Java作为一种跨平台的编程语言,与CORBA结合,可以方便地开发分布式应用程序。下面我们将详细介绍如何使用Java开发CORBA应用。 1. **使用IDL创建接口** CORBA应用的基础是接口定义语言(Interface Definition ...
但目前常用的Web技术难以解决现代分布式应用中存在的诸多问题,本文提出了工作流管理系统结构综合利用了Web,Java和CORBA技术,以Web技术作为客户与服务器的通信基础,以Java进行...
Java版的CORBA小程序是一个利用Java语言实现的客户端/服务器(C/S)架构的应用,它主要依赖于CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)技术。CORBA是一种中间件技术,旨在解决...
Java与CORBA的结合** Java CORBA利用Java语言的特性,如面向对象、跨平台等,提供了一种简单的方式来实现CORBA规范。Java IDL(Interface Definition Language)允许开发者定义接口,这些接口可以在不同的CORBA...