内 容 简 介Oracle Application Server 10g是一种能够支持所有主流Web开发语言、API和框架的应用服务器。它能够与Oracle数据库紧密结合,是一组在Web上动态传递内容的服务集合。本书全面阐述了使用该应用服务器进行Web开发的相关技术,包括以下一些主题:Oracle Application Server10g体系结构、Oracle Forms 10g、Oracle Reports 10g、Oracle Application Server Discoverer 10g、Oracle Application Server Portal 10g、Oracle JDeveloper 10g以及J2EE集成。本书适合于在Oracle Database 10g上使用Oracle Application Server 10g进行Web开发的程序员,以及对Web开发和数据库感兴趣的读者。
前 言 通常,编程是一件容易的事情。 也许“容易”并不恰当,但的确在几年前还是相当容易的。当我从大学毕业时,我的第一份工作就是在新泽西的一家电气公司写COBOL代码。我没有必要去抱怨网络协议、表示层、Web安全、事务处理或数据库模式等类似的事情,因为根本不存在任何实时事务——办事员处理所有本地(在PC机上)事务,而到了晚上,运行在HP 3000上的“检测”程序就会从PC机上捕获所有事务并开始处理,在HP图像数据库中更新记录、客户和业务总表,并生成电气的“获取清单”和发送调度表,然后第二天由卡车发送出去。 几乎难以想象类似这样的系统能够在今天继续使用。而客户和管理人员一般都需要实时最新的信息。Wired杂志的一个作者建议大的公共机构免除年度和季度收入报告,而给出实时的金融在线数据,使得投资商在决策前能够看到。然而这不可能马上就实现,现在的情况是:如果信息是公开的,当用户想查看信息时,就需要该信息是最新且准确的。 人们通常认为Web可以让所有事情变得容易,而它也的确做到了,不是吗?由于现代Web开发的动态特性,开发人员被认为是典型的双刃剑——不执行标准就可以让具有创新意识的编程人员扩展和提高终端用户的Web体验,然而这些扩展也带来了一定的代价——与浏览器不兼容的非标准环境、可测量性异常以及难于捕捉到的漏洞都被引入了。 尤其是Oracle,刚经受了大规模更换范例的暴风雨。怎么办呢?那就应该努力创建既能吸纳新技术又能支持传统应用程序的环境。通过这样的努力,Oracle确信以前使用Oracle的公司和组织已经可以充分利用更新的技术来继续维持它们的竞争优势。在鼓励更新它们的应用程序以此来维持Oracle所支持的可接受服务层的同时,即使在过去的十几年里经历了由客户-服务器到基于Web应用程序的范例转换,公司也不必抛弃类似Forms或Reports等开发平台(那些运行在基于DOS Forms 2.5上的范例可能需要更换平台,但这只是个别情况)。 Oracle Application Server 10g就是这种努力的结果。它是一个极好的软件,支持开发商和公司开发最新的Java技术(如JSP、JAAS等),从一个完整的基于Web的环境(OracleAS Portal)来构建Portal,使用了Oracle规范的安全特征集(Oracle Internet Directory、单点登录)并继续支持传统的应用程序(Oracle Forms、Oracle Reports和Oracle Discoverer),但是这些应用程序需要快速且容易地迁移到Web上。这个软件是安全的、可扩展的且稳定的,它提供了现今任何其他应用服务器都无法匹配的特征集合。 本书将要介绍Oracle Application Server 10g支持的各种开发环境。在每一章的最后,都有一节来总结这章所讲述的服务器技术。由于OracleAS Portal已经集成到Oracle Application Server 10g中,因此未做总结。本书没有讨论与Oracle Application Server 10g相关的管理任务。因此,可以参照Oracle出版公司出版的由John Garmany和Donald Burleson合著的Oracle Application Server 10g Administration Handbook(ISBN:0072229586)一书。 软硬件需求 要运行本书上的所有示例,需要安装了Business Intelligence and Forms的Oracle Application Server 10g。 如果运行的是基于Intel的机器(Windows或Linux),则需要一台配置至少为1.5GHz的处理器、带2GB的RAM和15GB硬盘空间的PC机。 若运行的是基于Unix的机器,不仅需要上面的配置,还需要检查特定的安装向导。 上面的需求只针对应用服务器而言,如果打算在同一台机器上运行下面这些组件,还需要更高的CPU主频、更多的RAM和硬盘空间。这些组件包括Oracle Developer Suite 10g——它包含了本书中所讨论的下列组件:Oracle Forms Developer 10g、Oracle Reports Developer 10g、Oracle JDeveloper 10g、Oracle Discoverer Administration Edition。 如果运行的是基于Intel的机器(Windows或Linux),则需要一台配置至少为1.5GHz的处理器、带512MB的RAM和15GB硬盘空间的PC机。 若运行的是基于Unix的机器,不仅需要上面的配置,还需要检查特定的安装向导。 上述的需求只针对开发套件,如果打算在同一台机器上运行应用服务器,还需要更高的CPU主频、更大的RAM和硬盘空间。 如果应用服务器运行在一台机器上,并且想在另一台机器上运行书上的实例,那么某些章节中的实例需要在机器间移动某些文件。要把文件移动到Unix机器上,需要使用ftp访问;要将文件移动到Windows机器上,需要一个共享目录。如果没有这些权限,可以与系统管理员联系。 本书读者对象 本书主要面向那些希望通过使用Oracle开发技术来开发基于Web的应用程序的开发人员。在任何环境下,都不可能有完美无缺的开发工具,因此本书讨论了当前使用的所有主要开发工具。由于本书旨在讨论当前开发人员可以使用的各种开发选项,因此这是一本范围“广泛”的书籍——它讨论了很多不同的技术,并提供了开始使用每个工具时的基本知识。对于这些章节主题的“深入”讨论,参见附录A。 本书的组织结构 本书分为4个部分,包括概述(第Ⅰ部分)、Oracle开发工具(第Ⅱ部分)、Oracle Portal(第Ⅲ部分)以及开发这些应用程序的最通用的Java技术和方法(第Ⅳ部分)。 第1章:技术概述 第1章对Oracle Application Server的功能进行了概述。列出了开发人员可以使用的技术、Oracle如何实现各种基于Web的标准,并介绍了Oracle植入应用服务器中的安全特征。 第2章:Oracle Application Server 10g体系结构 第2章讨论了Oracle Application Server 10g的体系结构,主要关注Oracle Java容器(Oracle s Containers for Java,OC4J)。OC4J向应用服务器提供了全套的Java服务,并且这些应用服务器的特性超过当前市场上使用的任何其他应用服务器的特性。 第3章:Oracle Forms Oracle Forms是Oracle最成熟的开发环境之一。它与Oracle数据库紧密结合,并向开发人员提供直观的图形开发环境。本章介绍了开发表单的基本知识,第6章和第11章将分别结合应用服务器和Portal环境对Forms进行讨论。 第4章:Oracle Reports 和Oracle Forms一样,Oracle Reports也是Oracle最成熟的开发环境之一。它与Oracle数据库紧密结合,并向开发人员提供直观的图形开发环境,使得设计复杂的报表变得更容易。本章介绍了开发报表的基本知识,第6章和第11章将分别结合应用服务器和Portal环境对Reports进行讨论。 第5章:Oracle Discoverer Oracle Discoverer是一种支持终端用户创建具体报表的工具,它不会对数据库造成严重的影响。本章介绍了这个工具是如何工作的,如何生成Discoverer工作薄和工作表,以及如何在Web上浏览。 第6章:将Oracle工具部署到Web上 一旦生成了Forms、Reports和Discoverer对象,如何将它们简单且安全地迁移到Web上呢?本章介绍了如何迁移Forms、Reports和Discoverer对象,如何重编译目标服务器,如何保护对象的安全以及如何访问对象。 第7章:PLSQL Web工具包和PSP PL/SQL工具包可以用来编写Oracle Application Server直接调用的数据库过程、函数和软件包代码。这个特性可以免除对访问Web上Oracle数据的开发工具的使用。本章介绍了Web工具的基础知识和PSP(PL/SQL Server Pages)——PL/SQL编程人员的JSP(Java Server Pages)。 第8章:Portal体系结构 OracleAS Portal支持简单地开发portlet(表单和报表等Portal组件)和内容页面(对于类似Microsoft Word文档等非结构化数据)。Portal环境虽然直观,但却和以往看到的开发环境不同。本章将探讨OracleAS Portal环境,并阐述如何生成简单的OracleAS Portal组件。 第9章:Portal开发部分1 在OracleAS Portal中可以生成很多不同类型的组件。本章将介绍开发时经常遇到的一些组件:OracleAS Portal Forms、OracleAS Portal Reports、OracleAS Portal Charts、OracleAS Portal Dynamics Pages、OracleAS Portal List of Values以及OracleAS Portal XML Components。 第10章:Portal开发部分2 本章继续介绍OracleAS Portal组件中的OracleAS Portal Calendars、OracleAS Portal Hierarchies、OracleAS Portal Menus、OracleAS Portal URLs、OracleAS Portal Links和OracleAS Portal Data Components。本章还将介绍内容、内容管理和OracleAS Portal Page Design。 第11章:将Forms、Reports和Discoverer集成到Portal中 本章讨论了Oracle Forms、Oracle Reports和Oracle Discoverer工作簿和工作单,并把它们集成到OracleAS Portal页面中。这样,我们就可以使用OracleAS Portal的安全特征和可视化模板来集成这些组件,用来维持portal的一致视图。 第12章:Oracle数据库中的Java 使用Java技术来集成应用程序时有很多选项,而Java技术往往是开发人员忽视的最简单方法之一:直接将Java代码存入Oracle数据库中。本章展示了如何存储并调用Oracle数据库中的Java代码。 第13章:JDeveloper Oracle JDeveloper 10g已经赢得了众多的荣誉,我们也很容易知道其中的原因。它是现今市场使用的最完整的IDE之一。由于已经有很多书籍对这方面的应用程序进行了介绍,因此本章只介绍Oracle JDeveloper 10g的基本知识,使读者在比较短的时间里就可以拥有自己编写的Java应用程序。 第14章:JSP JSP是一项非常优秀的技术,使用它可以很容易地增强网页的功能。本章将介绍JSP,讨论它的适用范围、语法和配置,以及使用标记库来扩展JSP功能。 第15章:部署EAR、WAR、JAR和JSP 在完成所有基于Java应用程序的工作后,如何将应用程序加载到应用服务器上呢?本章介绍了3种方法,对每种方法都分别阐述了其优缺点。 第16章:XML 对于很多开发人员而言,XML是一种备受争议的技术。虽然XML的使用非常普遍,但是很少有人知道它是如何将Oracle数据源与基于Web的应用程序进行关联的。本章概述了XML的基本知识,以及与XML相关技术的Oracle实现。 第17章:Web Service 您是否已经厌倦了对Web Services的学习,是否还没有开始就被所需要的大量预备知识压垮了呢?本章简要地概述了Web Services的基本知识,介绍了如何让自己成为更好的开发人员,以及Web Services是怎样更好地融入到Oracle Application Server 10g系列产品中的。 从本书获得的最大收益 希望您通过阅读本书能够学到很多知识,但是重要的是要真正体会本书所提供的所有技术,所以我鼓励您坐下来去专心完成那些实例。如果要这样做,就需要使用一定性能的硬件。书中的示例都是在一台服务器上编写并测试的,这台服务器由运行Windows 2000 Service Pack 4的Intel机器(使用了2.4GHz Pentium 4的处理器和2GB 的RAM)组成。每次试验都使用Oracle各种最新和最完整版本的软件,但并没有使用所有的软件包(要阐明这个问题,需要整整一本书),对于是否需要使用特殊的软件包,我们将作出最好的折衷。我使用的处理器为2.0GHz 的Pentium 4,RAM为1GB的笔记本通过802.11无线网来访问这台服务器,由于服务器上只有我这一台机器,所以使用性能矩阵没有什么意义,但是即使有让CPU和硬盘高速运转的应用程序(如开发某个应用程序或安装ADF运行时文件,我们将在第15章中阐述)时,我也可以用笔记本做其他的事情而不会察觉有任何速度的减慢。 试验,娱乐,而最重要的是开心! Chris Ostrowski Brad Brown 2004.10