Oracle Web Agent是当Web Listener收到一个动态文档请求时执行的CGI程序。此程序登录进数据库并执行作为URL的一部分而指定的PL/SQL存储过程。 作为开发Web Agent的PL/SQL工具,WebServer Developer''s 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 Developer''s 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 Developer''s 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 AgentService"一节. 4. PL/SQL 过程被调用 连接到数据库后,Web Agent调用相应的PL/SQL过程,其名字通过解析环境变量PATH_INFO获得。 假如PL/SQL过程要求参数,这些参数已经由Web Listener通过环境变量QUERY_STRING或标准输入(这依靠于请求方法是"GET"还是"POST")传给了WebAgent。
Web Agent将把这些参数传给PL/SQL过程。 有关PATH_INFO, SCRIPT_NAME,和QUERY_STRING 以及Oracle Web Agent如何使用他们的内容, 请见本章后面的"Web Agent如何使用CGI环境变量"一节. 5. PL/SQL过程执行, 生成 HTML 文档. 在Developer''s Toolkit的帮助下,PL/SQL过程从Oracle7数据库中提取出数据并在PL/SQL表中生成了HTML文档。 有关Developer''s Toolkit的内容请见第四章"Oracle WebServer Developer''s 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服务项的例子,每个参数有相应的解释。 Developer''s 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解析的例子。 http://www.nhl.com:8080/ows-bin/nhl/owa/hockey.pass?person=Gretzky 1. 子串 http://www.nhl.com:8080 表明Web浏览器要用HTTP协议连接到www.nhl.com主机的端口8080上。 2. 当运行在www.nhl.com上的Oracle Web Listener接收到请求,子串/ows-bin/nh
|