当前位置导航:炫浪网>>网络学院>>编程开发>>Oracle教程

Oracle webserver中文介绍-第三章


  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
相关内容
赞助商链接