揚揚的J2EE學習筆記(三)Components and Roles組件和角色
來源:互聯網
上載者:User
j2ee|筆記
每周學一些J2EE,作點筆記。
目標:能熟練使用Websphere做J2EE的開發工作。
加油!加油!!加油!!!
1. 架構
1) 組件:一個應用級的軟體單元 J2SE擁有JavaBeans;J2EE擁有EJB(Enterprise JavaBeans) 2) 系統級實體容器 提供:運行支援、生命週期管理、安全、部署、線程 3) applet和客戶應用程式 用戶端組件執行自己的Java虛擬機器(JVM) 4) WEB組件: 軟體實體,響應請求 通常為基於WEB的應用提供使用者介面 J2EE的兩種組件:◎Servlets ◎JavaServer Pages(JSP)
2. WEB組件
1) Servlet 擴充WEB伺服器的功能 接收用戶端請求,並將動態結果返回給用戶端 返回的結果通常以HTML或XML文檔的形式呈現 2) JavaServer Pages(JSP) 為用戶端提供動態內容 基於文本的文檔 處理請求 建立響應 包含: 格式化WEB文檔的模板資料 為WEB文檔產生動態內容的JSP元素和小指令碼 3) WEB組件包含在容器中 不同類型的容器: Servelet 支援HTTP JSP WEB容器可以訪問J2EE服務,並可與API服務互動
3. Enterprise JavaBeans(EJB)架構
1) 伺服器端技術 開發並部署公司專屬應用程式系統的商業邏輯組件,是基於分散式交易處理的企業級應用程式的組件。 2) 兩類企業Beans:Session Beans和Entity Beans 3) Session Beans會話Beans ◆ 為用戶端提供服務,通常是單用戶端/伺服器模式下 ◆ 操作Session Beans:完成計算、通過用戶端訪問資料庫 ◆ 可能是業務動作 ◆ 如果它的容器崩潰,會話Beans是不可被修複的 4) Entity Beans實體Beans ◆ 對資料庫中的資料提供了一種對象的視圖 經過實體Beans的資料一般是以如下的資料方式儲存:Rational資料庫管理系統;大型主機裡的老資料 ◆ 實體Beans可以和它所代表的資料一同存活下去。如果不再使用,實體Beans就會被終止 ◆ 被主鍵所識別 ◆ 如果它的容器崩潰,實體Beans(包括主鍵和遠程參考)是可以被修複的,在伺服器重啟時,實體Beans儲存的資訊會被放到新的容器裡。 5) EJB組件容器 ◆ 主管企業Beans ◆ 提供業務和持久服務 ◆ 提供訪問J2EE服務,以及與API互動的途徑
4. J2EE角色
1) 角色是特有的 2) 一個組織只需將角色稍作更改就能符合自己的特定環境 3) 角色是: ◆ J2EE Product Provider(J2EE成品提供者) ◆ Application Component Provider(應用組件提供者) ◆ Application Assembler(應用程式彙編器) ◆ Deployer(部署者) ◆ System Administrator(系統管理者) ◆ Tool Provider(工具提供者) 4) J2EE Product Provider ◆ 典型的IT產品提供者 ◆ 通過提供以下服務,運行J2EE成品: ◎ 組件容器 ◎ J2EE平台 的API ◎ 其它在J2EE聲明裡已經定義的特點:在J2EE聲明裡未清楚定義的,IT產品提供者可以利用這點來擴充他們的產品 5) Application Component Provider ◆ 提供: ◎ HTML文本設計器 ◎ 編程用的代碼編輯器 ◎ EJB開發 ◆ 本角色使用一定的工具來製作出J2EE應用程式及組件 ◎ 本角色是開發J2EE平台,或是在J2EE平台上做公司專屬應用程式開發的關鍵。
5. 系統管理員
6) 應用程式彙編器 ◆ 通過彙編組件,將提供的應用程式組件彙編成一個完整的J2EE應用程式 ◆ 以企業歸檔檔案(.ear尾碼)的形式傳遞 ◆ 為公司專屬應用程式程式的部署提供彙編指令:為應用程式額外地描述 ◎ SQL檔案的放置 ◎ 相關資料庫需執行的指令碼 ◎ 建立表格或資料庫 7) 部署者 ◆ 特定作業環境裡的專家 ◆ 負責: ◎ 部署web應用程式 ◎ 部署EJB ◆ 部署過程通常是三級過程 ◎ 公司專屬應用程式程式的安裝 ◎ 配置 ◎ 執行 8) 系統管理員負責 ◆ 配置和管理企業的資料計算及網路建設 ◆ 監督部署的J2EE應用程式運行時的情況 ◆ 可能需要使用一些專門的運行時監測和管理工具來完成任務
6. Tool Provider(工具提供者):提供用於應用程式組件部署及打包的工具
◆ 分為兩類 ◎ 獨立的平台工具:可用於所有的開發環境 ◎ 非獨立的平台工具:可用於應用程式的部署、管理和監測,必須注意此類工具都是專用於某個環境的,注意每個特定角色的限制
※不需在J2EE Product Provider和Tool Provider角色上花太多時間
以下內容系轉載:
EJB的體繫結構: EJB的上層的分布式應用程式是基於對象組件模型的,低層的事務服務用了API技術。EJB技術簡化了用JAVA語言編寫的公司專屬應用程式系統的開發,配置,和執行。EJB的體繫結構的規範由Sun Microsystems公司制定。Inprise的EJB容器是基於1.1版的規範。 EJB技術定義了一組可重用的組件:Enterprise Beans。你可以利用這些組件,象搭積木一樣的建立你的分布式應用程式。當你把代碼寫好之後,這些組件就被組合到特定的檔案中去。每個檔案有一個或多個Enterprise Beans,在加上一些配置參數。最後,這些Enterprise Beans被配置到一個裝了EJB容器的平台上。客戶能夠通過這些Beans的home介面,定位到某個Beans,併產生這個beans的一個執行個體。這樣,客戶就能夠調用Beans的應用方法和遠程介面。 EJB伺服器作為容器和低層平台的橋樑管理著EJB容器和函數。它向EJB容器提供了訪問系統服務的能力。例如:資料庫的管理和事務的管理,或者對於其它的Enterprise的應用伺服器。 所有的EJB 執行個體都運行在EJB容器中。容器提供了系統級的服務,控制了EJB的生命週期。因為容器掌握了絕大多數系統級的issues(呵呵,不知道怎麼翻譯)。Enterprise Beans 的開發人員不需要應用邏輯考慮進來。通常來說,EJB容器掌握了以下的系統級issues. 1、Security--配置描述器(The Deployment descriptor)定義了客戶能夠訪問的不同的應用函數。容器通過只允許授權的客戶訪問這些函數來達到這個效果。 2、Remote Connectivity--容器為遠程連結管理著低層的通訊issues,而且對Enterprise Beas的開發人員和客戶都隱藏了通訊issues.Enterprise Beans的開發人員在編寫應用方法的時候,就象是在條用本地的平台一樣的。客戶也不清楚他們調用的方法可能是在遠程被處理的。 3、Life Cycle managment--客戶簡單的建立一個Enterprise beans的執行個體,並通常取消一個執行個體。而容器管理著Enterprise Beans的執行個體,使Enterprise Beans實現最大的效能和記憶體利用率。容器能夠這樣來啟用和去活Enterprise Beans,保持眾多客戶共用的執行個體池。等等。 4、Trasction management—配置描述器定義了Enterprise beans 的交易處理的需求。容器管理著那些管理分散式交易處理的複雜的issues。這些事務可能要在不同的平台之間更新資料庫。容器使這些事務之間互相獨立,互不干擾。保證所有的更新資料庫都是成功發生的,否者,就復原到交易處理之前的狀態。 Enterprise Beans 組件: Enterprise Beans 是基於分散式交易處理的企業級應用程式的組件。所有的Enterprise beans都有如下的特點: Enterprise beans包含了處理企業資料的應用邏輯。Enterprise beans provider定義了Enterprise beans的客戶介面(Enterprise beans 的遠程介面)。這樣的介面不受容器和伺服器的影響。於是,當一個Enterprise beans被集合到一個應用程式中去時,不用更改代碼和重新編譯。Enterprise beans能夠被定製各種系統級的服務,例如安全和交易處理的特性,都不是屬於Enterprise beans class的。而是由配置和組裝應用程式的工具來實現。有兩種類型的Enterprise beans: Session beans 和 entity beans.(還有一種message driven bean,這裡暫時不加討論) Session beans: Session beans 是一種作為單個的client執行的對象。作為對遠端工作要求的相應,容器產生一個Session beans 的執行個體。一個Session beans有一個client.從某種程度上來說,一個Session bean 對於伺服器來說就代表了它的那個client.Session beans 也能用於事務,它能夠更新共用的資料,但它不直接描繪這些共用的資料。 Session beans 的生命週期是相對較短的。典型的是,只有當client保持會話的時候,Session beans 才是活著的。一旦client退出了,Session beans 就不再與client相聯絡了。Session beans被看成是瞬時的,因為如果容器崩潰了,那麼client必須重建立立一個新的Session對象來繼續會話。 一個Session bean典型的聲明了與client的互操作或者會話。也就是說,Session bean了在客戶會話期間,通過方法的調用,掌握Client的資訊。一個具有狀態的Session bean稱為有狀態的Session bean.當client終止與Session beans互操作的時候.會話終止了,而且,bean 也不再擁有狀態值。 一個Session bean也可能是一個無狀態的 session bean.無狀態的Session beans並不掌握它的客戶的資訊或者狀態。Client能夠調用beans的方法來完成一些操作。但是,beans只是在方法調用的時候才知道client的參數變數。當方法調用完成以後,beans並不繼續保持這些參數變數。這樣,所有的無狀態的session beans的執行個體都是相同的,除非它正在方法調用期間。這樣,無狀態的Session beans就能夠支援多個client.容器能夠聲明一個無狀態的Session beans.能夠將任何Session beans指定給任何client. Entity Beans: Entity Beans對資料庫中的資料提供了一種對象的視圖。例如:一個Entity bean能夠類比資料庫表中一行相關的資料。多個client能夠共用訪問同一個Entity bean.多個client也能夠同時的訪問同一個Entity bean.Entity beans通過事務的上下文來訪問或更新下層的資料。這樣,資料的完整性就能夠被保證。 Entity Beans能存活相對教長的時間,並且狀態是持續的。只要資料庫中的資料存在,Entity beans就一直存活。而不是按照應用程式或者服務進程來說的。即使EJB容器崩潰了,Entity beans也是存活的。Entity Beans生命週期能夠被容器或者 Beans自己管理。如果由容器控制著保證 Entity beans持續的issus。如果由Beans自己管理,就必須寫Entity beans的代碼,包括訪問資料庫的調用。 Entity Beans是由主鍵(primary key 一種唯一的物件識別碼)標識的。通常,主鍵與標識資料庫中的一塊資料,例如一個表中的一行,的主鍵是相同的。主鍵是client能夠定位特定的資料區塊。 EJB roles: EJB體繫結構通過把編程的過程分為6個不同的角色而使開發複雜的的應用系統變的簡單。6個不同的角色,每個都有特定的任務。6個角色包括下層的服務,應用程式的開發,配置和操作說明(issues) EJB體繫結構能夠簡化應用程式開發人員的工作。在EJB體繫結構中,容器和代理服務承擔了很多在其他環境中又程式設計人員承擔的工作。這樣的代理提供了很多原來需要程式設計人員編寫代碼的系統級的服務。 Infrastructure roles;(下層構造角色) EJB Server Providor服務提供者是典型的提供分布式低層服務的代理。EJB服務提供者提供了一個分布式應用程式開發人員需要的平台和設施。也提供了分布式程式的運行時環境。 EJB Container Providor 容器提供者是分布式系統,交易處理,安全方面的專家容器提供者提供了一個EJB的組態工具,和這些配置執行個體的運行時支援。 一個容器對一個或多個EJB來說,是一個運行時系統。它將Enterprise Beans和EJB服務,包括事務服務,安全服務,分布式網路管理等膠合在一起。容器是既是一個定製的代碼和對特定的 Enterprise beans產生詳細代碼的工具。容器也提供了一個配置Enterprisebeans的工具和管理監視應用程式的方法。