?? oracle webserver
字號:
作者:孤獨求敗
日期:00-1-14 3:56:03
第三章 Oracle Web Agent的構成
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 Agent
Service"一節.
4. PL/SQL 過程被調用
連接到數據庫后,Web Agent調用相應的PL/SQL過程,其名字通過解析環境變量
PATH_INFO獲得。
如果PL/SQL過程要求參數,這些參數已經由Web Listener通過環境變量
QUERY_STRING或標準輸入(這依賴于請求方法是"GET"還是"POST")傳給了Web
Agent。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/nhl/owa 表明要求Web Listener去執行Web Agent而不是返回一個靜態HTML
文件。
3. 調用Web Agent后, Web Listener把/ows-bin/nhl/owa作為環境變量SCRIPT_NAME
傳給Web Agent。URL的其他部分以這種方式傳給Web Agent:子串/hockey_pass作為
PATH_INFO,子串"person=Gretzky"作為QUERY_STRING,傳遞給Web Agent。
4. Web Agent從SCRIPT_NAME中解析出服務名nhl.
注意:如果Web Agent不能處理傳來的服務名, 缺省為owa_default_service.
5. Web Agent解析PATH_INFO來決定hockey_pass為登錄Oracle7后調用的PL/SQL過程。
6. Web Agent將在QUERY_STRING變量中傳給他的參數傳給他調用的PL/SQL過程。
注意: 使用環境變量QUERY_STRING 即表明這是個GET請求. 你也可以用POST方法傳遞
參數。如何使用POST方法傳遞參數的例子,見下一節, "傳遞參數給PL/SQL".
傳遞參數給PL/SQL
為了執行和生成相應的HTML文檔,一個PL/SQL過程通常需要參數。以下幾節討論一下
一個PL/SQL開發員在參數如何得以傳遞到指定的PL/SQL例程方面應該理解的幾個關鍵
概念和要領。
這些關鍵概念和要領為:
從Web瀏覽器到Web Agent的參數獲取
使用HTML表格傳遞參數
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -