WebServer教程.doc_第1页
WebServer教程.doc_第2页
WebServer教程.doc_第3页
WebServer教程.doc_第4页
WebServer教程.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章. 什么是 Oracle WebServer? Oracle WebServer是一个与Oracle7 Server紧密集成的HTTP服务器,能够由存储在 Oracle数据库的数据建立动态HTML文件。当数据改变时,这些HTML文件也自动更新,而不需要站点管理员的参与。这种方法用动态地实时地反映基于Oracle7服务器的商务系统中的当前数据,而不是当今大多数站点上可见到的静态的或不变的数据显示。 商务数据是存储在oracle7数据库中的。它在服务器中被格式化为Web文档,然后传输给Web客户机。所有数据只存储一次,依据Web上的使用需要而定期进行“快照”。 构成Oracle WebServer的各部分协同工作,使得投递静态和动态信息均为可能。 Oracle WebServer的组成部分 Oracle WebServer的组成部分如下: Oracle Web Listener. Oracle Web监听程序接收使用任何浏览器的用户发出的请求。对于静态(基于文件的)页面请求被监听进程立即处理,其功能即是一个HTTP 服务器。Oracle Web Agent. Oracle Web 代理处理来自拥护的对于动态页面的请求。它将连接转向Oracle7 Server, 调用请求的过程,并将结果HTML文件返回浏览器。Oracle WebServer Developers Toolkit. Oracle WebServer 开发者工具箱是一个帮助用户创建生成动态HTML文件的过程的集合。 Oracle7 Server. Oracle7 Server 为关系型表的数据和所有用于创建HTML页面的程序逻辑提供存储。他们中的每个部分和操作将在以后的章节中详细描述。 1.1 The Oracle Web Listener监听程序 Oracle Web 监听程序是个商业品质级的HTTP服务器,为来自任何Web浏览器的文档请求进行服务。 客户端可以位于使用标准HTTP协议的网络的任何地方。在此协议之下,文档的类型与文档本身一起发往客户端。Web Listener支持多种不同的文档类型。客户端解释并且显示相应的文件,或者将文件传给处理该文档类型的特定程序。例如,在客户机上MPEG viewer将接收由新闻广播宕下来的视频片段。Oracle Web Listener可以处理大量的模拟请求,并具有比目前市场上的HTTP服务器更有效利用系统资源的高级特性。这些特点将在Oracle Web Listener中详细论述。 Oracle Web Listener接收到一个来自客户机的请求后,他首先判断它请求的是一个静态文件还是动态文件。如果请求的是静态文件,Web Listener将文件和相关的类型信息直接发给客户端。如果请求的是动态文件,它由一个由Web Listener启动的程序在“飞行中”(on the fly)创建,且与公共网关接口(CGI)兼容。CGI是一个使HTTP服务器能够运行程序并将程序输出作为一个文件发送给用户。大多数HTTP服务器都支持此接口,Oracle Web Listener 遇到一个数据库存储过程的请求时,使用该接口调用Oracle Web Agent。另外,其他任何可执行的程序均可以通过CGI调用。 有关Web Listener的进一步信息,见第二章。 - 1.2 Oracle Web Agent 代理 Oracle Web Agent是 Oracle Web Listener当接收到一个对数据库存储过程的请求时调用的的一个程序。它处理与Oracle7 Server建立连接的细节。Web代理使用作为Web Agent service的一部分的指定的数据库用户名和口令,来连接到单一的Oracle7 Server。为了连接到不同的服务器,或者同一服务器的不同模式,可以在一个Oracle WebServer上可以配置多个Web Agent 服务。这在准确地控制了Web客户端能够访问的信息的同时,也允许创建从多个不同的数据库汇合数据的应用的极大灵活性。 Oracle Web Agent的进一步内容, 请见第三章 Oracle Web Agent. - 1.3 Oracle WebServer 开发者工具箱 Oracle WebServer开发者工具箱是一个帮助用户快速使用Oracle WebServer建立Web应用的一个PL/SQL例程集合和样例应用。样例应用可以作为用户应用的模板。经过简单的修改以包含用户站点的特定的文本和图形,这些样例就可以迅速简单地为特定的站点所客户化。 当Oracle Web Agent登录到Oracle7 Server时,它启动一个已由用户创建的用于生成HTML页面为输出的PL/SQL过程。开发者工具箱中的过程和函数生成实际HTML标记,所以将注意力集中在应用的内容上,而不是HTML的特性上。 有关Oracle WebServer 开发者工具箱的例程的详细内容,请见第四章。 - 1.4 Oracle7 Server Oracle7 Server是一个高性能,容错的关系型数据库管理系统,专门为联机事务处理和大型数据库应用而设计。Oracle7 Server能可靠地管理在多用户环境下的大量的数据。Oracle7 Server即使在很多用户并发地存取数据时,也能提供高性能。它对于未授权访问也是安全的,并提供失败恢复的有效方案。 有关Oracle7 Server的讨论请见本手册的第 4 章及本书前面列出的文件。 第二章. Oracle Web Listener Oracle Web Listener是一个高性能,可伸缩, 可移植的 HTTP 服务器,支持要求迅速响应的的高流量的 Web 应用。 Oracle Web Listener专为实现企业网络或全球因特网上的分布式信息系统而设计. 从用户的角度看,Web 是一个文档或页面的集合,他们包含了文字,图象和指向其他页面的链接。通过点,单击并浏览这些链接,用户可以立即访问一个分布的信息系统。Oracle Web Listener 融合了信息检索和超文本技术来建立一个强大的全球信息系统。 Oracle Web Listener 工作在简单的客户机-服务器模式下。客户端向 Oracle Web Listener 发出请求。Listener 通过读取URL来解释请求,找到或生成所请求的信息,并将信息返回给通过表格进行请求的客户机。 在同一台机器上可以运行多个使用各自专有端口的 Oracle Web Listeners。使用多个 Web Listeners 是在多个不同应用之间平衡负载的好方法。 Oracle Web Listeners 与其客户端通讯所使用的语言是超文本传输协议(HTTP)。Web Listeners实现的是IETF HTTP工作组(/pub/ietf/http/) 定义的HTTP协议的版本1.0。所有的Web客户端为了能收发超媒体文档,必须能讲HTTP协议。 HTTP协议是一种应用级的协议,轻便并能满足分布式的协同工作的超媒体信息系统所要求的速度。它是一种通用的,无状态的面向对象的协议,通过扩展它的请求方法(命令)可以用于很多系统。 本章后面将讲述: Oracle Web Listener 的特性 Oracle Web Listener 的配置参数 2.1 Oracle Web Listener 的特性 Oracle Web Listener 包含了一定数目的特性以在不同的环境下增强其性能和扩展其使用能力。 High Performance Architecture 高性能的体系结构 为使性能最大化,Oracle Web Listener 被设计为作为通过带单线索的单进程运行的的异步引擎,与大多数HTTP服务器不同,他们每建立一个新连接就启动一个新进程或线程。这显著地减少了服务一个请求所要求的时间,降低了监听机资源的使用,如果是在重负载下提供高性能的话。 File Caching in Memory 文件内存缓存 Oracle Web Listener 允许在内存中缓存一个可配置的经常存取的文件集。当这些文件被客户端访问时,将能提供很好的性能。 在当前版本的Oracle Web Listener 中,进行内存缓存的文件列表由WebServer管理员决定并能手工配置。管理员应定期分析监听程序日志以决定那些文件性缓存并相应的修改设置。 Memory Mapping of Files 文件内存映射 在支持此特性的操作系统上,文件被访问时,Oracle Web Listener 自动将他们映射到内存地址上(除非他们被永久的缓存在内存中了)。这种情况下,文件将象是从内存中加载的,允许多于一个连接访问同一文件而避免重复读取磁盘。另外,操作系统通常在前一段传输后,预读内存缓存文件的下一段,所以即使是单一连接的情形下,也能进一步提高性能。 Directory Mapping 目录映射 Oracle Web Listener 支持将在Web上外部表现在URL中的路径名映射到Web Listener 机器上的内部位置。这使得即使Web Listener的磁盘被重新规划了,对客户端仍是一致的。外部可见(虚拟)目录到本地文件系统中的物理目录的指定映射是管理员可配置的。 例如:URL /products/info.html 可以映射为系统 的目录 /disk1/ products : /disk1/products/info.html 如果一次重组时,将目录 products 移到 /disk3, 管理员在Web listener 配置文件(owl.cfg), 中重新配置虚目录 products 指向新位置 /disk3/products,而Web客户则完全不知道这一改变. 注意:Web Listener需要重新载入以识别改动。有关重启Web Listener的信息,见本章后面的Web Listener Control Utility 。 Language Extensions 语言扩展名 Oracle Web Listener支持文件按照不同的字符集存储以适应所使用的语言。Web Listener可以解释文件扩展名以得出文件中数据的类型(如HTML数据)和文件是以何种语言写的。语言影射特性有管理员控制,并允许客户端访问以与不同的语言相应的字符集书写的文件。指定的文件扩展名与语言和数据类型的影射关系有Web Listener配置文件控制。 HTTP Protocol Negotiation Features HTTP协议协商特性 HTTP的特点之一是客户端和HTTP服务器交换有关他们能传输和能解释的数据类型的信息。这些协商特性允许使用不同的数据类型和语言构造系统。 当一个Web客户机请求一个对象时,它可以指定它能接收何种类型的数据并表示指定类型的配置。 Web Listener可以用此信息发出相应格式化的数据到客户机,如果Web Listener上储存着不止一种格式的话。这一过程叫作HTTP类型协商,OWL完全支持它。例如,文档中包含行中的图象,它可以以或者gif或者JPEG的格式传输到Web客户端。 Oracle Web Listener 也支持类似的概念来协商文挡应以哪种语言显示给特定的用户。 文档可能以多种语言存储(例如英语和加拿大法语),如果客户端表明了配置将发送适宜的文档拷贝给他。这极大简化了多语站点以的维护,因为不需要为不同的语言维护重复的URL或分离的目录。 Common Gateway Interface 通用网关接口 (CGI) 通用网关接口(CGI)版本1.1是HTTP服务器用以执行一个程序产生HTML输出的标准技术。这种技术提供了动态内容而不是来自磁盘文件的静态内容。Oracle Web Listener 与CGI 1.1完全兼容。 当一个请求进来而Web Listener识别出该请求将执行一个CGI应用,将创建一个单独的进程执行这一操作。Web Listener与该进程保持通讯,将Web客户端的输入传过去,检索其生成的用于客户端屏幕显示的HTML输出。 Web Listener管理员可以配置指定的目录以包含CGI程序用以运行而不是传输文件。这些都可以用Web Listener配置文件来做到。有关WEb Listener配置文件,参见本章后面的Configuration Parameters,。 CGI Application Execution CGI程序执行 当客户端向Oracle Web Listener发出一个URL请求,URL的路径部分被分析以决定它是否代表一个包含文件的目录(通常情况下)。 这些文件被立刻发给客户端,对于包含CGI应用程序的目录,有时被作为脚本引用,他们必须被作为单独的程序执行以生成发往客户端的输出。CGI应用执行技术是Web的关键特性之一。它允许多个信息源的集成。 Oracle Web Agent即是一种可用此项技术访问的的CGI应用。 一旦监听程序发现URL代表一个CGI应用,它将解释此URL并分解出路径信息和参数,传给正在启动的CGI应用。 CGI程序的URL可分为3部分: virtual path 虚拟路径 extra path information 另外的路径信息 query string 查询字符串 The syntax is as follows: 语法如下: virtual_path extra_path_information?query_string virtual path 虚拟路径 模拟一个你用于访问常规文档或图象的路径。就是说,它为服务器指向一个含有你想执行的CGI程序的文件。 extra path information 另外的路径信息 你将在URL中附加在程序名后面的额外信息。另外的路径信息是一个可选项。它可以用于传递常量信息给那些依赖客户端输入的脚本。它也可以用于访问服务器的虚拟-物理路径的转换机制。 query string 查询字符串 是URL的另一个可选项。它既可以显式地由超文本锚给出,也可以是来自用户在带ISINDEX标记的HTML文件中的搜索对话框中的输入,或者来自HTML表格。 来自URL或其他资源的用户输入 当数据在搜索对话框或文本输入表格中输入时,数据将使用URL encoding进行编码。此编码依据以下规则编码: 空格变成加号+ 任何一个字符都可以转义为%xx格式的序列,其中 x 是十六进制数字。字符由转换两位十六进制数成的代表字符的0-255的数字表示。 如果来自一个由ISINDEX标记的搜索对话框结果,以上的转换将直接进行。另外,如果你想避免自己进行次转换,你的CGI程序可以在命令行上接收已完全转换的信息。如果数据来自HTML表格,数据变量的位置依赖于你的HTML文档中表格标记中指定的方法属性。如果使用GET方法,这些信息来自变量QUERY_STRING。如果使用POST方法,这些信息使用标准输入发送给你的程序。 数据以此格式提供: name1=value1&name2=value2.&nameN=valueN 如果在编码后的数据中有任何等号(=)或与号(&),他们被使用以上规则编码。为了正确地解码数据,NAME=VALUE对不应被分割直至与号,每个对应分为名称和值,URL编码将对每一个对进行。 当表格提交时,你通常使用表格项出现的顺序来决定你的CGI程序接收NAME=VALUE对的顺序。然而你不能依赖这种行为。不同的表格元素有他们自己的方式来决定什么值将和他们给定的名字相联系。所有文本性的输入区使用用户的键入作为值。 Radio button圆型钮使用使能钮的值 Checkboxes检查框不打叉时,他们或者使用空字符串或者他们的名字根本不在加密表格数据中出现。 隐藏的表格项可以用于发送常量或状态信息给你的脚本。 Imagemap Support图形映射的支持Oracle Web Listener的图形映射特性允许发送给客户端的显示图形有多个链接区,用户点中图形的不同位置将进行不同的超级链接。例如一个世界地图,允许用户通过点击来选择国家。图形映射的使用在sophisticated站点中十分普遍。 Oracle Web Listener在Web Listener中包含图形映射的内部处理。很多其他的HTTP服务器要求在解释图形映射时,创建一个独立的进程。通过内部完成这些,在这一HTML的常见特点被用到时,Oracle Web Listener提高了性能并降低了系统资源的使用。 Domain Name Server (DNS) Resolution域名服务器(DNS)解析 当客户端向HTTP服务器请求一个URL时,客户机的网络地址(IP地址)被服务器登记且可以用来控制对HTTP服务器上的文件的访问权限。域名系统(DNS)将客户机的网络地址转换为ASCII码的客户机主机名。 注意: DNS处理能定时消费,因为另一台运行名系统的机器可以被联系上。 Oracle Web Listener提供控制DNS解析网络地址的三个选项: 总是解析连接中的地址 进行“懒”解析,只有一个外部应用,安全模块或CGI脚本需要时,才解析名字。即使客户机要求,也不解析地址。 你可以使用Oracle WebServer管理工具或编辑配置文件来控制使用那种类型的DNS解析。缺省为提供最佳性能的-不使用DNS进行解析。 当DNS解析发生时,结果被缓存。在最近的成功中,通常有几个来自同一客户机的 连接,这能在要求DNS解析时,最小化性能降低。 Client to Web Listener Security客户到Web Listener的安全 Oracle Web Listener的安全框架包括对基本授权和授权。这两种模式的都提供文件上的用户名和口令的授权。也可以进行基于客户机网络地址的访问控制。使用Oracle WebServer 管理工具 配置安全特性。 Basic Authentication 基本授权 此模式使用在通过网络不加密地发送的用户名和口令。实践中这种技术已广泛地被digest授权取代,但它与较老的浏览器兼容,而digest授权不能。 Digest Authentication Digest 授权 这种模式与基本授权相似,除了它将用户名和口令加密地在网络上发送之外。一个加密的校验和(digest)用于编码口令,防止攻击者获取用户名/口令的原样组合。这种技术显然比基本授权更安全,并建议所有新应用使用,但对于较老的浏览器,其中某些还较为普遍,并不支持Digest授权。 Internet Protocol-Based Restriction 因特网基于协议的限制 客户机的网络地址可以用于限制对Oracle Web Listener上信息的访问权。地址可以独立的被限制或允许访问,或者整个网络可以指定允许某些位置下的用户访问,而禁止其他所有的用户的访问。 当客户端请求一个受基于IP的安全的保护时,它的地址与指定的地址按照给定的顺序进行比较,当发现一个匹配时,客户端按照指定的被允许或禁止访问。受基于IP限制保护的文件可能不能被在配置参数列出的之外的客户端访问。 注意:Digest授权是较安全的判断用户真正是谁的技术,因为认证(口令)必须代表获取权限。基于网络地址的限制技术很适于避免口令管理问题,但仍不太安全,因为精明的攻击者可以伪造网络地址。 Domain Name -Based Restriction 基于域名的限制 基于域名的限制类似于基于IP的限制。一个组或主机的列表指明了哪些主机有或没有有一个文件集的访问权限。这项技术使用符号化的主机名,而不是网络地址。因此,它更便于管理员,因为如果网络结构变化时网络地址可能变化。这项技术当精明的攻击者伪造网络地址并假设一个他们不拥有的主机标志时,也会遇到问题。 Security on Specific Files 指定文件上的安全 指定安全可以将他们与基本授权,Digest授权,IP地址约束,域名约束,或者一种授权和一种限制方法的任意组合。 Other Security Features 其他安全特性 除授权之外,Web Listener的用户和组标识(在UNIX上)可以在配置文件中指定,Web Listener自己也限制在尽能访问对该用户名和组有效的范围内。这允许WebListener被启动时象一个有权限用户一样在执行方面有要求,但操作时仿佛它是个无权限的程序。这提供了对直接攻击Web Listener进程的另外的安全保护。有关组标识以安全为目的的使用的信息,见第七章的“基本配置参数”。 Logging 日志 当对Web Listener请求时,请求信息可以被登录在指定的日志文件里。Oracle Web istener以工业标准的通用日志格式记录连接。此格式包括客户请求的第一行,其中指明了动作,URL,和协议版本。它也包括例如客户机主机地址,请求是否成功,传输了多少字节之类的信息。这些信息可以以后用于分析哪些用户进行了哪些类型的访问,或检查错误。使用WebServer管理工具可以在Web Listener配置文件中指定日志文件的目录以及标准日志和错误日志的名称。 注意: 确保Web Listener在一个有权限读写日志目录的用户下运行。 Starting Up and Shutting Down the Oracle Web Listener 启动和下宕Oracle Web Listener 启动,下宕,或重启 Oracle Web Listener的最简单的方法是使用Administration Utility。如果你想在UNIX操作系统执行这些操作,按照下述方法使用WLCTL工具。 The WLCTL (Web Listener Control) Utility 此工具位于 ORACLE_HOME bin目录下,能够让你轻松地启动,下宕,或重启 Oracle Web Listener。 使用WLCTL进行不同的操作的语法如下: wlctl start|stop|reload port_number ORACLE_HOME 如果ORACLE_HOME在你的环境中已设置,且ORACLE_HOME表示Oracle WebServer安装的位置,它就不需要包含在命令行中。 以下例子假设Oracle WebServer位于 /u01/oracle: 当 ORACLE_HOME 已设置时: wlctl start 8888 在命令行指定ORACLE_HOME: wlctl start 8888 /u01/oracle 当 ORACLE_HOME 已设置时: wlctl stop 8888 在命令行指定ORACLE_HOME: wlctl stop 8888 /u01/oracle 当 ORACLE_HOME 已设置时: wlctl reload 8888 在命令行指定ORACLE_HOME: wlctl reload 8888 /u01/oracle 停止和重启功能要求你所要停止和重启的Web Listener的Listener PID文件存在于Web Listener配置文件所指向的位置。第三章 Oracle Web Agent的构成 Oracle Web Agent是当Web Listener收到一个动态文档请求时执行的CGI程序。此程序登录进数据库并执行作为URL的一部分而指定的PL/SQL存储过程。 作为开发Web Agent的PL/SQL工具,WebServer Developers Toolkit包括以下包: HTP (超文本过程)和 HTF(超文本函数) 简化了在用户的PL/SQL代码里 生成HTML标记的工作。HTP和HTF自动生成由Oracle Web检索的HTML标记。 OWA_UTIL 包含了能使程序员更快速构造HTML输出的实用函数。 注意: Web Agent 也包括一些叫OWA的PL/SQL包,它包括一些由Web Agent调用的进行诸如设置CGI环境变量和从PL/SQL表中提取由PL/SQL代码生成的输出等实用功能。一个PL/SQL开发员不能直接调用OWA包,虽然它可以用用户通过URL直接调用。 Oracle WebServer Developers Toolkit的进一步信息见第四章。 - 谁使用Oracle Web Agent Oracle Web Agent 可以被以下人使用: 想开发与oracle7互操作的Web应用的程序员。Oracle Web Agent允许程序员创建 PL/SQL过程来进行数据库操作并将结果格式化为HTML文档。这些文档被返回Web 客户端。 所以,程序员需要了解以下知识: 用于生成HTML格式文档的超文本函数和超文本过程。 PL/SQL过程语言的基础。 另外,以下知识对于程序员也非常重要: 哪些公共网关接口的变量 对于 PL/SQL应用是有效的,以及如何存取它们。 Web Agent如何处理参数 (本章介绍) 如何使用OWA_UTIL PL/SQL实用包 (, The WebServer Developers Toolkit.中介绍) 想安装和设置Oracle Web Agent,并用管理员工具维护Web Agent的系统管理员。 管理员需要了解以下知识: 如何创建,修改和删除Web Agent服务。 在哪里安装由Web Agent提供的开发工具PL/SQL包。 下述信息对管理员也十分有用: Oracle Web Agent如何工作 (本章讲述) Web Agent如何处理错误 (本章讲述) 3.1 Oracle Web Agent如何工作 Oracle Web Agent使你能用开发工具箱创建PL/SQL存储过程来存取Oracle7的数据,动态生成来自那些数据的HTML文档,并将文档返回给客户端。 下面描述一下Oracle Web Agent是如何一步一步工作的: 1. 用户从浏览器提交一个URL。 用户以下列方法之一提交URL: 通过从HTML页面上选择一个链接 在其浏览器的打开URL框中指定一个URL 提交HTML表格 此动作触发了一个与URL相关的GET或POST请求方法操作。请求方法使用HTTP协议传给了Web Listener。 2. Web Listener 启动了 Web Agent. Web Listener判断此URL是否与Oracle Web Agent有关(通过抽取URL的/owa部分),并调用Web Agent。为与CGI标准兼容,Web Listener使几个环境变量对Web Agent有效. 3. Web Agent连接到Oracle7 Server. 为连接到Oracle7 Server,Web Agent要求一些诸如连接到哪个服务器,使用什么用户名和口令等信息。这些信息作为Web Agent的一部分,存储在位于OWS管理目录下的文件owa.cfg 中。Web Agent通过解析环境变量SCRIPT_NAME来决定使用哪个服务,环境变量SCRIPT_NAME是由Web Listener根据CGI 1.1说明书设定的。 Web Listener从URL中/owa 前面的路径段推出这个环境变量的值。例如,如果/ows-bin/hr/owa是URL的前边部分,那么hr就是要使用的服务。 有关如何设置Web Agent service的进一步的内容, 请见本章后面的Web Agent Service一节. 4. PL/SQL 过程被调用 连接到数据库后,Web Agent调用相应的PL/SQL过程,其名字通过解析环境变量PATH_INFO获得。如果PL/SQL过程要求参数,这些参数已经由Web Listener通过环境变量QUERY_STRING或标准输入(这依赖于请求方法是GET还是POST)传给了Web Agent。Web Agent将把这些参数传给PL/SQL过程。 有关PATH_INFO, SCRIPT_NAME,和QUERY_STRING 以及Oracle Web Agent如何使用他们的内容, 请见本章后面的Web Agent如何使用CGI环境变量一节. 5. PL/SQL过程执行, 生成 HTML 文档. 在Developers Toolkit的帮助下,PL/SQL过程从Oracle7数据库中提取出数据并在PL/SQL表中生成了HTML文档。 有关Developers Toolkit的内容请见第四章Oracle WebServer Developers Toolkit. 6. Web Agent将生成的HTML文档传给Oracle Web Listener. 如果PL/SQL过程成功结束,Web Agent将从PL/SQL表里取出生成的HTML文档,并把它发送到标准输出,那里是Web Listener期望CGI应用把他们的输出发送到的地方。 如果PL/SQL过程返回错误,Web Agent则把程序定义的出错页面发送到标准输出。 有关如何处理错误的内容请见Oracle Web Agent Error Handling一节。 7. Web Listener把 HTML文档发送回原发出请求的浏览器 Web Listener使用HTTP将HTML文档发还浏览器。浏览器并不知道请求的文档是在飞行中生成的,把它象任何其他HTML一样显示在屏幕上。 Web Agent服务 Service 因为人们希望单个Web Listener能够访问多个数据库或一个数据库里的多个模式,Oracle Web Agent支持服务的概念。我们用下面的例子描述一下服务的概念: 公司A想让他们存储在Oracle7数据库中的数据可以被公众通过Oracle Web Listener 访问。然而公司内不同部门对数据库以用户名为分割的不同部分(模式)有访问权限。所以,人力资源部和财务部使用不同的用户名/口令组合来登录数据库。如果他们都想用使用Oracle Web Agent的CGI应用访问他们的数据,Web Agent需要使用正确的用户名/口令来登录数据库。采用这种方案,含有配置信息的owa.cfg文件中包含两个服务,HR 服务和AP服务。每个服务有相关的用户名/口令,ORACLE_HOME参数,和ORACLE_SID参数。当一个来自浏览器的请求到来时,Web Listener从URL中抽取出服务名并读取owa.cfg文件找出将使用的参数。 为连接到Oracle7服务器,Web Agent需要在Web Agent服务中指明以下信息: username 用户名 password 口令 ORACLE_HOME ORACLE_SID (仅对本地数据库) SQL*Net V2 Service Name or Connect String (仅对远程数据库) Administration Utility允许管理员显示,创建,修改或删除Web Agent服务。用创建Web Agent的表格,你不需要直接修改配置文件owa.cfg。参见 Creating or Modifying Web Agent Services, 。 下面是一个owa.cfg文件中Web Agent服务项的例子,每个参数有相应的解释。 Developers T# ( owa_service = es ( owa_user = www_es ) ( owa_password = tiger ) ( oracle_home = /opt/oracle7 ) ( oracle_sid = esprod ) ( owa_err_page = /es_err.html ) ( owa_valid_ports = 8000 8888 ) ( owa_log_dir = /opt/oracle7/ows/log ) ( owa_nls_lang = AMERICAN_AMERICA.US7ASCII ) ) owa_service Web Agent 服务的名字 owa_user Web Agent连接数据库用的数据库用户名。 owa_password Web Agent连接数据库用的数据库口令。 oracle_home Oracle7代码树在文件系统中的位置。它应该是Web Agent服务连接到的数据库的ORACLE_HOME,除非Web Agent设置为通过SQL*NET连接到一个远程数据库。这种情况下,指定Web Agent所在的ORACLE_HOME。Web Agent总是安装在ORACLE_HOME目录或其子目录下。 oracle_sid 将连接到的数据库的系统ID名。连接到远程数据库时,不要使用。 owa_err_page Web Agent调用的PL/SQL过程发生错误时,Web Agent返回的HTML文档的路径。这是个实际路径,而非Web Listener配置中的那种虚拟路径。 owa_valid_ports Web Agent将服务的有效的Web Listener网络端口。 owa_log_dir Oracle Web Agent写出错文件的目录。出错文件的名字为service_name.err。 owa_nls_lang Web Agent连接的Oracle7数据库的NLS_LANG。若不指定,Web Agent管理程序当服务执行时寻找数据库的NLS_LANG。 Web Agent如何使用CGI环境变量 Web Agent使用的环境变量见表3-1: 变量 包含 REQUEST_METHOD GET 或 POST PATH_INFO 将调用的PL/SQL过程的名字。 SCRIPT_NAME 包含登录Oracle7时用的Web Agent和服务 。 QUERY_STRING PL/SQL过程的参数(仅对GET方法。POST方法的参数通过标准输入传递。) 表 3 - 1. Oracle Web Agent使用的CGI 变量 下面是一个典型的URL如何被与CGI 1.1说明书兼容的Web Listener解析的例子。 :8080/ows-bin/nhl/owa/hockey.pass?person=Gretzky 1. 子串 :8080 表明Web浏览器要用HTTP协议连接到主机的端口8080上。 2. 当运行在上的Oracle Web Listener接收到请求,子串/ows-bin/nhl/owa 表明要求Web Listener去执行Web Agent而不是返回一个静态HTML文件。 3. 调用Web Agent后, Web Listener把/ows-bin/nhl/owa作为环境变量SCRIPT_NAME传给Web Agent。URL的其他部分以这种方式传给Web Agent:子串/hockey_pass作为PATH_INFO,子串person=Gretzky作为QUERY_STRING,传递给Web Agent。 4. Web Agent从SCRIPT_NAME中解析出服务名nhl. 注意:如果Web Agent不能处理传来的服务名, 缺省为owa_default_service. 5. Web Agent解析PATH_INFO来决定hockey_pass为登录Oracle7后调用的PL/SQL过程。 6. Web Agent将在QUERY_STRING变量中传给他的参数传给他调用的PL/SQL过程。 注意: 使用环境变量QUERY_STRING 即表明这是个GET请求. 你也可以用POST方法传递参数。如何使用POST方法传递参数的例子,见下一节, 传递参数给PL/SQL. 传递参数给PL/SQL 为了执行和生成相应的HTML文档,一个PL/SQL过程通常需要参数。以下几节讨论一下一个PL/SQL开发员在参数如何得以传递到指定的PL/SQL例程方面应该理解的几个关键概念和要领。 这些关键概念和要领为: 从Web浏览器到Web Agent的参数获取 使用HTML表格传递参数 参数排序 参数缺省值 多个HTML表格字段使用同一个名字 过程重载 从Web浏览器到Web Agent的参数获取 依赖使用REQUEST_METHOD 的不同, 参数由Web浏览器到Web Listener的传递有两种方法: QUERY_STRING环境变量 - 如果浏览器使用GET方法,Web Listener用此环 境变量传递参数给Web Agent。 标准输入 - 如果使用POST方法,Web Listener使用标准输入传递参数到Web Agent。从Web Listener到Web Agent的参数传递方法对于PL/SQL过程这个参数的实际消费者来说是透明的。这是Oracle Web Agent的一个重要特性:PL/SQL程序员不需要知道使用何种方法,不需要关心从环境变量QUERY_STRING还是标准输入进行解析。PL/SQL程序员因而精力集中在他们最精通的方面:开发从Oracle数据库提取数据的逻辑,基于从Oracle Web Agent传来的预解析的参数。 建议:可能的情况下,使用POST。GET方法用于链接和非表格URL。对于HTML表格,可以有个选择。因为GET方法使用操作系统环境变量,QUERY_STRING有长度限制。 使用HTML表格传递参数 下例模拟前一节,除非它使用HTML表格使用POST REQUEST_METHOD。 窗体顶部Please type the name of the person you wish to search for: To submit the query, press this button: . 窗体底部上面的表格使得Oracle Web Listener与前一个例子的行为一样,只是不再使用person=Gretzky填环境变量QUERY_STRING,Web Listener把person=Gretzky写到标准输出。这里当然假设了用户在表格的字段里输入了Gretzky。 注意:HTML输入变量的名字,此处为person,必须和与它相匹配的PL/SQL参数完全相同。 上述参数的接收的PL/SQL过程如下: create or replace procedure hockey_pass (person in varchar2) is n_assists integer; begin select num_assists into n_assists from hockey_stats where name=person; htp.print(person| has |to_char(n_assists)| assists this season); end; 参数排序 总的来说, PL/SQL开发员不需要关心Oracle Web Agent以什么顺序从HTML表格或通过一个URL接收参数. 它仅在从一个表格字段传递多个值时才有关系。参见本节后面的多个HTML表格字段使用相同的名字。 参数缺省值 如果PL/SQL开发员不能保证对于特定的PL/SQL过程参数必然有从Web浏览器传来的值的话,建议给此参数一个缺省值,例如: create or repl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论