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工作组http://www.ics.uci.edu/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
http://www.acme.com/products/info.html
可以映射为系统 www.oracle.com 的目录 /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 Suppo