您的位置:寻梦网首页编程乐园Java天地JDBC用PL/SQL和Java开发Oracle8i 应用程序
Java 天地
用PL/SQL和Java开发Oracle8i 应用程序(5)

作者:翻译:张猛  来源:Java开发者

案例学习

现在,我们已经理解了如何用PL/SQL和Java在Oracle8i 里建立应用程序,现在我们看看最早采用Oracle8i 的三个客户,详细研究他们是如何创建性地运用Oracle8i 提供的特性,扩充他们现有PL/SQL应用程序的功能的。

资产管理软件开发商

这家软件开发商提供的公司资产管理解决方案,广泛地用于制造业和行销业。他们非常有创造性地把PL/SQL和Java 存储过程组合在一起,从而把原有的应用程序从客户-服务器架构升迁到基于Web的架构。他们已有一个用普通的客户-服务器架构开发的2.0版应用程序。在普通的客户-服务器架构里,应用程序使用Visubal Basic和Powerbuilder的组合客户端,同Oracle7发行版7.3数据库和Oracle8数据库里的PL/SQL存储过程、触发器对话。为了让使用这套资产管理软件的客户能够利用标准的Internet浏览器作为客户端,开发商把现有的应用程序升迁成使用纯HTML的客户端,如下图所示:

原来运行在客户端(以Visual Basic或Powerbuilder代码)的所有应用程序逻辑,都从客户端移出,用Java重新编写。起初,Java 程序在应用程序服务器OAS4中运行。由于Oracle8i提供了支持Java的功能,所以开发商获得进一步的灵活性——所有“数据密集”型的应用程序逻辑,从应用程序服务器升迁进 Oracle8i 内部。

使用新的架构,HTML客户同运行在Oracle ® 应用程序服务器上的JWeb程序进行通信。Jweb使用Java servlet API,动态地生成HTML页面。然后,JWeb 程序通过集成在OAS里JDBC/Oracle调用接口,与Oracle8i里的Java和PL/SQL存储过程通信。资产管理应用程序以XML文档的方式接收、生成有关不同类型资产的信息。

需要注意的是,不必重新编写的PL/SQL逻辑——因为原来的通信,就是从Powerbuider客户(通过Oracle调用接口)或从Visual Basic 客户(通过Oracle Objects for OLE)对PL/SQL进行调用。现在,中间层的Java逻辑,可以通过JDBC/Oracle调用接口API调用原有的PL/SQL——即使有些Java 商业逻辑移进Oracle8i 服务器之后,也仍然可以通过服务器内嵌的JDBC驱动程序访问原有的PL/SQL。使用PL/SQL存储过程和现在的Java存储过程,公司保护了在编写应用程序逻辑上的投资,同时客户端使用的环境仍然能够继续不断地发展。

无线通信供应商

一家无线通信供应商,已经在Oracle8里,用PL/SQL存储过程,建立起一套网络监控和管理应用程序,并把应用程序升迁到Oracle8i。使用Oracle8的解决方案时,系统管理员需要不断地查询数据库,以判断是否发生了网络中断。客户希望在Oracle8i时升迁现有的应用程序,采用所谓“活动数据库”的概念。在这个概念下,发生网络中断事件时,会同时向许多系统管理员发送预警。每个系统管理员客户被开发成一套CORBA服务— 客户把网络中断作为触发器。在发生网络中断时,向数据库表中插入一行,从而激发触发器,触发器就会激活CORBA调用,通知系统管理员客户发生了网络中断事件。请注意:所有现存的PL/SQL逻辑,仍然可以从Java方便地访问到。

基于INTERNET的市场分析和股票报价服务

基于Internet的市场分析和股票报价服务,是一项大量应用PL/SQL的服务。公司不断地取得世界各地金融市场的股票、期货报价。信息保存在Oracle数据库里,然后根据公司订户输入的参数,动态地生成HTML页面。

公司对PL/SQL很满意,因为PL/SQL提供了订户要求的性能级别。订户们的要求是:动态地、在1.5秒内生成web页面,这些web页每一个都会执行大量PL/SQL调用。公司已经能把性能维持在满足最高600,000页/天客户请求的级别上。他们用PL/SQL执行几乎所有的数据库操作。有460个包和过程负责数据更新、生成表示信息。在客户端,则使用Java applets建立高度交互的web页面。Applets取得的数据,来自PL/SQL,PL/SQL根据保存在数据库里的信息生成供Applets使用的数据。他们对于PL/SQL的可靠性很满意:一旦布署了PL/SQL代码,那么在PL/SQL运行的时候,就不必再担心什么了。他们在PL/SQL上已经建立起真正的技术,希望升级到Oracle8i,以便采用Oracle8i 的新特性。他们没有在数据库里升迁到Java的打算。

地理空间解决方案供应商

某家地理空间供应商建立了一套工程配置系统,用于制造工程、建筑工程和地理空间。开始的时候,不得不把这套系统开发成二部分:一套运行在Oracle7/ Oracle8 数据库里的PL/SQL存储过程,封装了一套公共的商业规则,控制哪些用户和组可以读取、修改复杂的空间图表。这些存储过程,被Pro*C客户端依次调用,执行全部地理和空间计算,然后把计算出的信息传递给一套ActiveX控件进行显示。在公司升迁到瘦客户机架构时,他们发现,在从数据库提取大量数据到中间层服务器时,由于网络延迟,现在在中间层服务器上运行的Pro*C 逻辑受到很大限制。用Java重新编写这个逻辑之后,由于Java非常适合计算操作,他们发现二个重要的好处:

  • 首先,他们可以在数据库里运行所有逻辑,只需把最终结果发送给web服务器,在浏览器显示即可。所以,网络的延迟显著降低,应用程序的性能明显提高。
  • 第二,因为Java逻辑在Oracle 数据库服务器里运行,所以独立软件开发商ISV就没有必要跨操作系统或硬件平台开发应用程序逻辑,也没有必要在多种服务器上进行布署。而且,因为Oracle8i 里的Java逻辑能够很容易地访问PL/SQL,所以所有现存PL/SQL应用程序逻辑仍旧可以使用。

总结

随着Oracle8i的发行,Oracle在数据库里支持二种主要的编程语言——PL/SQL和Java.。关于Oracle8i、PL/SQL和Java,有三件事非常重要,需要记住:

  • PL/SQL和Java 应用程序在数据库里无缝地互操作。现有的PL/SQL程序,能够容易地用Java应用程序逻辑进行扩展。同样,Java 存储程序也可以方便地调用服务器里的PL/SQL或SQL。Oracle8i 为PL/SQL和Java提供了大量公共特性,包括:公共的库管理特性,公共的安全和纯态模型,有效的、高超的访问静态、动态SQL的途径,还有大量其它公共特性。Java和PL/SQL之间这种无缝的集成,保护了客户在PL/SQL上的已有投资,并使他们可以非常容易地,以渐进的方式,采用Java。
  • PL/SQL最适于SQL密集型操作;Java则适于计算型操作及CORBA和EJB 分布式计算。
  • 在服务器里加入Java,Oracle不是为了用Java取代PL/SQL,相反,通过扩展类型系统、扩展可以使用的不同编程方法、扩展可以与服务器通信的客户、扩展可以在服务器内部直接进行的计算操作类型,Java的加入,增强了现有系统的能力。
上一页 (ZDNet)