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 可以被以下人使用:
想開發與oracle
互操作的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如何處理錯誤 (本章講述)
Oracle Web Agent如何工作
Oracle Web Agent使你能用開發工具箱創建PL/SQL存儲過程來存取Oracle
的數據
動態生成來自那些數據的HTML文檔
並將文檔返回給客戶端
下面描述一下Oracle Web Agent是如何一步一步工作的
用戶從浏覽器提交一個URL
用戶以下列方法之一提交URL
通過從HTML頁面上選擇一個鏈接
在其浏覽器的打開URL框中指定一個URL
提交HTML表格
此動作觸發了一個與URL相關的GET或POST請求方法操作
請求方法使用HTTP協議傳給了Web Listener
Web Listener 啟動了 Web Agent
Web Listener判斷此URL是否與Oracle Web Agent有關(通過抽取URL的/owa部分)
並調用Web Agent
為與CGI標准兼容
Web Listener使幾個環境變量對Web Agent有效
Web Agent連接到Oracle
Server
為連接到Oracle
Server
Web Agent要求一些諸如連接到哪個服務器
使用什麼用戶名和口令等信息
這些信息作為Web Agent的一部分
存儲在位於OWS管理目錄下的文件owa
cfg 中
Web Agent通過解析環境變量SCRIPT_NAME來決定使用哪個服務
環境變量SCRIPT_NAME是由Web Listener根據CGI
說明書設定的
Web Listener從URL中/owa 前面的路徑段推出這個環境變量的值
例如
如果/ows
bin/hr/owa是URL的前邊部分
那麼hr就是要使用的服務
有關如何設置Web Agent service的進一步的內容
請見本章後面的
Web AgentService
一節
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環境變量
一節
PL/SQL過程執行
生成 HTML 文檔
在Developer
s Toolkit的幫助下
PL/SQL過程從Oracle
數據庫中提取出數據並在PL/SQL表中生成了HTML文檔
有關Developer
s Toolkit的內容請見第四章
Oracle WebServer Developer
s Toolkit
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
一節
Web Listener把 HTML文檔發送回原發出請求的浏覽器
Web Listener使用HTTP將HTML文檔發還浏覽器
浏覽器並不知道請求的文檔是在飛行中生成的
把它象任何其他HTML一樣顯示在屏幕上
Web Agent服務 Service
因為人們希望單個Web Listener能夠訪問多個數據庫或一個數據庫裡的多個模式
Oracle Web Agent支持服務的概念
我們用下面的例子描述一下服務的概念
公司A想讓他們存儲在Oracle
數據庫中的數據可以被公眾通過Oracle Web Listener訪問
然而公司內不同部門對數據庫以用戶名為分割的不同部分(模式)有訪問權限
所以
人力資源部和財務部使用不同的用戶名/口令組合來登錄數據庫
如果他們都想用使用Oracle Web Agent的CGI應用訪問他們的數據
Web Agent需要使用正確的用戶名/口令來登錄數據庫
采用這種方案
含有配置信息的owa
cfg文件中包含兩個服務
HR 服務和AP服務
每個服務有相關的用戶名/口令
ORACLE_HOME參數
和ORACLE_SID參數
當一個來自浏覽器的請求到來時
Web Listener從URL中抽取出服務名並讀取owa
cfg文件找出將使用的參數
為連接到Oracle
服務器
Web Agent需要在Web Agent服務中指明以下信息
username 用戶名
password 口令
ORACLE_HOME
ORACLE_SID (僅對本地數據庫)
SQL*Net V
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/oracle
)
(
oracle_sid = esprod
)
(
owa_err_page = /l
)
(
owa_valid_ports =
)
(
owa_log_dir = /opt/oracle
/ows/log
)
(
owa_nls_lang = AMERICAN_AMERICA
US
ASCII
)
)
owa_service
Web Agent 服務的名字
owa_user
Web Agent連接數據庫用的數據庫用戶名
owa_password
Web Agent連接數據庫用的數據庫口令
oracle_home
Oracle
代碼樹在文件系統中的位置
它應該是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連接的Oracle
數據庫的NLS_LANG
若不指定
Web Agent管理程序當服務執行時尋找數據庫的NLS_LANG
Web Agent如何使用CGI環境變量
Web Agent使用的環境變量見表
:
變量 包含
REQUEST_METHOD GET 或 POST
PATH_INFO 將調用的PL/SQL過程的名字
SCRIPT_NAME 包含登錄Oracle
時用的Web Agent和服務
QUERY_STRING PL/SQL過程的參數(僅對GET方法
POST方法的參數通過標准輸入傳遞
)
表
Oracle Web Agent使用的CGI 變量
下面是一個典型的URL如何被與CGI
說明書兼容的Web Listener解析的例子
子串 表明Web浏覽器要用HTTP協議連接到主機的端口
上
當運行在上的Oracle Web Listener接收到請求
子串/ows
bin/nh
From:http://tw.wingwit.com/Article/program/Oracle/201311/18724.html