1. 程式人生 > >ebs系統架構簡介1——三層結構上篇

ebs系統架構簡介1——三層結構上篇

轉載自:http://www.itpub.net/thread-1409361-1-1.html

Oracle Applications DBA 基礎》3- 4 系統架構及基本系統管理知識

1. 系統架構介紹
==============

Oracle 的applications 主要包括一個檔案系統一個數據庫

而檔案系統包括:forms(用來互動和更新資料)、reports(用來顯示標準的輸出資料)、一致性程式(提供了大容量、非互動的資料更新操作)、程式和sql指令碼(管理這個系統)、html和java(用來顯示使用者介面和實現商業應用)

資料庫包括:資料物件(表、索引等)、程式碼物件(sql、plsql塊,過程、函式、觸發器)



分層架構分析:

1、Desktop Tier:

Oracle applications 的架構是 multi-tier 的。不同層有不同的 components 如下:
在Desktop Tier 上既有 典型的HTML介面又有傳統的 FORMS 介面 。FORMS介面通過Forms client Applet (Java client Applet的一種)與 應用伺服器聯絡,下載 有關的JAR file。原來的11i 需要 Oracle 專用的JVM, 叫 Jinitiator。 R12 中只需要標準的 J2SE plugin JVM。JAR檔案包含了所有需要的類檔案,用來顯示ebs所有描述性的form表單。

對於form 客戶端的applet,一般常用的jar檔案在第一次session的時候就會下載到本地;但是對於不常用的jar檔案,使用的時候才會下載下來。所有下載下來的檔案都會cache到本地的客戶端,以供後續的會話使用,具體的cache目錄如下:<HOMEDRIVE>\Documents and Settings\<Windows User Name>\Application Data\Sun\Java\Deployment\cache 我自己的在這個目錄裡:C:\Users\liu\AppData\LocalLow\Sun\Java\Deployment\cache

在R12中,我們可通過java外掛的控制檯(從哪個java圖示點——開啟控制面板——高階——java控制檯)

所有對jar檔案的更新都會被安裝到應用層,然後才會被自動下載到客戶端那一層。




2、Application Tier:

對應地, 在Application Tier,既有web 伺服器,J2EE 伺服器,也有傳統的 FORMS/Reports 伺服器。當然,還有 batch job 用的 Concurrent Manager。所以我們可以認為oracle application Tier包括瞭如下四個服務:

·Web  services ·Forms  services ·Concurrent   Processing    server ·Admin   server

籠統的看,應用層扮演了兩個角色:

1,、叢集化不同的伺服器(這裡不是指硬體,是指提供服務的程式如:並行處理伺服器(concurrent processing server))和服務組來完成商業邏輯;

2、管理Desktop 和 database層的會話互動。

R12 有 如下 三個 Oracle HOME:
1. RDBMS ORACLE_HOME: 這是 後臺資料庫用的。(我們稍後介紹)


2. 10.1.2 ORACLE_HOME : 又叫做Tools, C, or Developer ORACLE_HOME, 主要是給 FORMS 及 REPORTS 用的。(相當於 11i 裡 的8.0.6 ORACLE_HOME。)


3. 10.1.3 ORACLE_HOME :又叫做 Web or Java ORACLE_HOME, 主要是給web server (Apache) 及 JAVA (OC4J )用的。( 相當於 11i 裡 的iAS ORACLE_HOME)


當看完上面的圖片的時候你可能並不是很清晰到底10.1.2 和 10.1.3這兩個ORACLE_HOME目錄裡到底有什麼,或者說到底是什麼樣子,我用secureCRT的一個小工具叫secureFX可以開啟linux下的檔案目錄結構圖:

這樣我們非常清晰的認識到了這兩個ORACLE_HOME目錄所負責的功能。

2.1    、基於html的應用

2.1.1    10.1.3目錄

還沒有講完,我們單獨拿出10.1.3這個oracle home來講一下起其內部機構:

web services是指處理來自客戶端的請求的一個元件(與他處於平行關係的是forms 和 reports的元件,在10.1.2中),包括下面三個部分:

Web Lisener(就是HTTP Sserver,apache提供的)

OC4J(用來執行java程式的容器)

OPMN(oracle process manager)

基於html的應用有如下特點:

1、沒有form介面;2、純html和javascript開發;3、通過執行java程式碼動態生成html頁面;4、對固定的頁面層,使用元資料資料字典;5、通過直接連線web伺服器操作。


oracle applications server 可以分為oracle http server和j2ee的容器:


其中oracle http server 通俗的理解就是一個web listener,並且添加了一些元件,提供了資訊傳遞到j2ee容器的功能, 一般就是apache 的web伺服器。。。

j2ee的容器分為兩種:一種叫web container用來執行jsp 和servelet的,能夠提供請求的分配,請求併發控制,請求生命週期管理。提供了請求連線到jdbc 的一些元件等。。

還有一種叫:EJB(enterprise  java  bean) 它管理著所有的j2ee的應用程式(這些應用程式對資料庫進行商業邏輯的操作)


oracle application Server 包含了下面三個驅動器,這些驅動器提供了到oracle資料庫的高擴充套件高可靠的連線:

1)oracle JDBC drivers:oracle的JDBC驅動器,除了提供標準的JDBC api支援,還提供擴充套件的oracle指定的資料型別加強了效能。

2)J2EE Connectors:是j2ee平臺的一部分,提供了一個基於java的解決方案,連線不同的應用程式伺服器和企業資訊系統。

3)DataDirect Connect  Type 4 JDBC drivers:資料直接的JDBC驅動,對於連線非oracle資料用的。


2.1.2    、oracle  application framework( 應用程式開發框架):

oracle applications framework :

oracle應用程式開發框架是基於html的開發平臺,它是由一個: 基於java的應用程式層框架和相關的服務 組成,其設計的初衷是用來快速的部署基於html的應用程式。

BC4J(business component for java):被包括在JDeveloper中,用來建立java的business元件,以表示商業邏輯;它還提供了一個“java物件 到 表” 的對映機制。允許應用商業邏輯和使用者介面的分離。

AOL/J:他連線資料庫並提供給OAF服務。擁有特定的應用程式的功能。(一個可選的或者說是可替代這個AOL/J的元件叫做 oracle universal connection pool——UCP)。具體ucp的理解可以參照:http://blog.csdn.net/cymm_liu/article/details/9987839

針對HTML-Based 的應用, Oracle 開發 Oracle Applications Framework (OAF)。OAF 包括如下component:
- AOL Java (AOL/J)
- Business Components for Java (BC4J)
- Java Controller
- Metadata UI Definition
- UIX HTML Generator        

OAF 採用 J2EE 的 MVC (Model- View - Controller) 的 design pattern。 所以如果你用過J2EE MVC 開發,應該不難理解。比一般的 MVC 開發稍微複雜一點的是 HTML 頁面的生成是由存在資料庫裡面的 metadata dictionary 控制。有關MVC分層架構的介紹參考:http://blog.csdn.net/cymm_liu/article/details/10008839

最後,我們在整體回顧一下HTML 頁面服務的各個元件如何協同工作:

1)使用者從瀏覽器裡點選了一下一個按鈕,這個按鈕對應著一個函式功能。

2)瀏覽器轉換成URL的訪問請求到web listener。

3)web listener 去找OC4J(跑servelet的引擎),說客戶要你執行某程式,或邏輯運算,並返回給客戶結果。

4)Servelet會通過jsp程式去ebs的資料庫的 metadata dictionary(元資料字典)取出一些表的資料,構造HTML頁面。

5)HTML頁面通過web server 返回給使用者。

那麼我們會繼續往下想,JSP頁面是怎麼獲得的ebs的資料呢?我們從上面的第4條繼續引申:

1)AOL/J先確認使用者要訪問的page。

2)page 的定義資訊(也就是元資料的UI定義資訊(metadate UI definition))從資料庫層的元資料倉庫(metadata Repository)傳送到應用層。

3)儲存了應用邏輯和訪問資料庫的  BC4J物件 被例項化。

4)java的控制程式設計元件 根據動態UI規則來生成頁面的定義

5)UIX(HTML UI Generator)解釋頁面的定義,根據UI標準建立響應的html,傳送到瀏覽器。

2.2、 Forms的服務
R12 還有大量的 FORMS 介面,所以 在伺服器上也有 Forms Services。

Forms Services 由如下4個元件:

1)Forms  Servlet:當一個使用者開始了一個Forms的應用程式,Forms Servlet就是用來建立最初始的連線,它給客戶端返回HTML檔案,這些HTML檔案中含有Forms Client applet(Applet是一種特殊的Java程式,它本身不能單獨執行,需要嵌入在一個HTML檔案中,藉助瀏覽器或Appletviewer來解釋執行)

2)Forms Client Applet:是在客戶端瀏覽器裡執行的一個java applet,它為相應的Forms 執行時程序(Runtime Process)提供了使用者介面。

3)Forms LIstener Servelet:執行在OC4J servelet container中的servelet,它負責如下幾件事,1、管理每個客戶端的Forms執行時程序的生命週期;2、管理每個客戶端連線到執行時程序的網路連線;3、通過Oracle Net 這種網路基礎與oracle資料庫進行互動;4、快取客戶端需要的資料,比如從資料庫裡取出了好多行,可以一行一行的發到客戶端,其餘的先快取在這裡面。

使用forms listener servlet有如下的好處:

1)重建刪除的連線

2)少量的機器和多口暴露在防火牆外,簡單的防火牆和代理(proxy)伺服器的配置

3)在internet上更強健和安全的部署


4)Forms Runtime Process:在Oracle Application Server裡執行的一個程序,這個程序維護者客戶端applet和資料庫的互動。

Oralce Application Server Forms Services Architecture:

我們通過分析一個請求的過程,來熟悉一下Forms Services 的結構:

1)使用者開啟瀏覽器,並且為Forms 應用程式點了對應的URL地址。

2)HTTP Listener 解釋這個URL並顯示一個HTML頁面,這個頁面包含一個 applet 標籤,描述了指向瀏覽器的Forms Java Client。URL呼叫Forms Servlet動態的去建立HTML頁面 。The HTTP Listener interprets the URL and displays an HTML page containing an <APPLET> tag that describes the Forms Java Client to the browser. The URL calls the Forms servlet to create the HTML page dynamically.

3)客戶端接收到HTTP Listener 傳送過來的HTML檔案,這個HTML檔案支援請求的資訊 定位java類檔案,這個java類檔案構造Forms Java Client;這個HTML檔案也包含了請求的forms 應用程式的資訊,傳遞給Forms Session的引數(如登入資訊等)。The client receives the HTML file served by the HTTP Listener. The HTML file supplies the information required to locate the Java class files that make up the Forms Java Client. The HTML file also contains information about the requested Forms application, as well as parameters that get passed to the Forms session, such as login information.

4)瀏覽器下載Forms Java Client 並啟動Java Applet。

5)Forms Java Client Applet 通過HTTP Listener向Forms Listener Servlet 傳送一個請求,去啟動一個Forms Session。

6)Forms Listener Servlet收到Forms Java Client傳送的請求後,為這個請求啟動一個Forms Runtime Process。

7)Forms Runtime Process 把來自客戶端的HTML檔案指定的模組,還有庫檔案和選單項等 獲得過來。任何的Forms Java Client 和Forms Runtime Process的互動都是通過Forms Listener Servlet的。

8)使用者被提示輸入資料庫的登入資訊,連線到資料庫伺服器的連線建立。

9)現在使用者可以用Forms Application 對資料進行操作了。


2.3、Concurrent Manager: 

併發管理器(concurrent manager)是併發處理的基礎核心,承擔了工作的計劃和執行,它的本質是:

一個在oracle Application 中登記的可執行的程式庫,作為作業系統的一個程序執行,執行的作業系統程序稱為目標程序(target processes,一般叫做worker),在同一時間一個目標程序可以啟動一個併發程式。

併發管理器,可以執行任何的併發程式,或指定待定的併發程式,通過“工作班次(work shift)” 來指定執行的日期和時間。

主要負責處理 batch job, 比如複雜的報表,涉及大量更新的處理等。使用者在前臺提交請求 ( concurrent request),請求會寫到 資料庫的表上去,然後,Concurrent Manager 就會讀表,一個一個的進行處理。

EBS 有三個非常重要的master concurrent magagers:

Internal Concurrent Manager(ICM):它控制所有的其他的manager,可以說他就是老大,它在所有的manager執行之前執行。ICM主要的工作就是啟動或者關閉其他的concurrent managers,或者重新啟動那些失敗的managers。

Standard Manager(SM):執行那些不在特定manager裡執行的reports和batch jobs,那哪些是specific 的concurrent manager呢?包括:Inventory Manager,CRP Inquiry Manager,Receivables Tax Manager。

Conflict Resolution Manager (CRM):用不相容規則去檢查併發程式的定義,然而,ICM也可以被配置的,接管CRM的工作去解決衝突。

TransactionManager   用來支援同步請求處理。通過使用管道的方式來同步客戶端和伺服器之間的通訊,使用FND_TRANSACTION.SYNCHRONOUS功能來實現

Concurrent request的 log 或 output file 會 通過        Report Review Agent ($FND_TOP/bin/FNDFS)送到 FORMS Services,再有 FORMS Services 傳給 使用者的 browser。
Report Review Agent的詳細內容可參看 :
《The Basics About Report Review Agent (FNDFS) on 11i (Doc ID 111383.1)》。

2.4、Admin Server

admin server是指用來維護資料庫和資料模型的那個節點。

1.使用adpatch工具應用資料庫層操作的補丁(d-driver)。(貌似這句話說的有問題,以我現在的理解,adpatch只是針對應用的各個模組的,而opatch才是針對三個oracle home的) 2.使用adadmin工具維護應用資料。