Oracle webserver中文介紹-第三章
2024-08-29 13:41:02
供稿:網友
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