freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

ejb開發(fā)手冊(編輯修改稿)

2024-11-18 11:15 本頁面
 

【文章內容簡介】 定 Entity Bean 是否被其他 Entity Bean 所關聯(lián),例如,表示賬戶的 Entity Bean 與表示在賬戶上發(fā)生的歷史操作之間,賬戶知道自己發(fā)生的所有歷史紀錄,可以從賬戶定位相關的歷史紀錄的集合,可以稱為表示歷史紀錄的 Bean 被表示賬戶的 Bean 所關聯(lián),因此,表示賬戶歷史紀錄的 Bean 必須提供可本地訪問的接口類型,即提供本地接口與 本地 Home 接口。如賬戶與賬戶歷史紀錄之間存在雙向的關系,即可從表示歷史紀錄的 Bean 定位到表示賬戶的 Bean,則表示賬戶的 Bean 也必須提供可本地訪問的接口類型。 因為本地訪問的關系,參與同一個容器管理關系的 Entity Bean,必須被打包到同一個 EJB JAR 文件中。本地訪問的最大好處是效率上的提高,因為,通常本地訪問要快于遠程訪問。 . 方法參數和返回值 組件接口類型影響組件方法被客戶端調用時的參數傳遞方式。 遠程調用中的參數是按值傳遞的,傳遞的是對象的拷貝,但本地調用中參數的傳遞則是 按引用傳遞的,與 Java 編程語言中的正常的方法調用相同。 遠程調用中,客戶端與組件相對比較獨立。因為客戶端與組件操作不同的參數對象拷貝,任何一方對數據的修改,不會影響另一方的數據。 在本地調用中,客戶端和組件修改的是同一個對象。在編寫 Enterprise Bean 時,應避免使用由這種傳遞方式帶來的副作用,因為,當應用規(guī)模增長,客戶端被分布到不同的物理服務器,參數的傳遞方式亦隨之改變。 . 遠程還是本地 決定一個組件應該提供遠程訪問還是本地訪問,一般有以下一些因素。 ? 容器管理關系 如果某 Entity Bean被其他 Entity Bean 所關聯(lián),則此 Entity Bean必須提供本地訪問接口。 ? 相關 Bean 之間的耦合程度 耦合程度高的 Bean 之間存在互相依存的關系。因此,這一類 Bean一般需要提供本地訪問接口,以形成一個邏輯上的單元,同時提供整個單元內交互的效率。 ? 客戶端類型 如 Bean 將被 Java EE 應用客戶端所訪問,則應該提供遠程訪問接口。如果客戶端是 Web 組件或其他 Bean,提供何種類型的訪問接口決定于這些組件的分布狀況。 ? 組件分布 Java EE 應用可以分布在多個計算機,為提供這種分布上 的可伸縮性,將被分布到不同位置的組件所訪問的 Bean,應該提供遠程訪問接口。 盡管一般 Bean 只提供一種類型的客戶訪問接口,但事實上,有一些 Bean 仍需要同時提供兩種類型的接口。 . 執(zhí)行效率與組件接口類型 因為網絡延遲等因素,本地訪問通常要快于遠程訪問;另一方面,在不同的服務器上分布應用,可以提高應用的整體運行效率。而且,不同的操作環(huán)境中,執(zhí)行效率也會有不同。因此,設計應用時應考慮執(zhí)行效率的影響。 . Enterprise Bean 的內容 一個合法的金蝶 Apusic 應用服務器 的 EJB,應包含如下幾個部分: ? 部署描述:定義 Bean 部署信息,如包含持久類型、事務屬性等信息的 XML 文件。通常通過使用圖形化的部署工具生成。對于 Apusic 應用服務器,部署描述文件包括一個 EJB規(guī)范中規(guī)定的 文件和一個 Apusic規(guī)定的 。在 , 中的部署描述信息可通過注解在源代碼中進行標記。 ? 組件接口:在 提供遠程客戶訪問能力的 Bean 必須提供遠程接口文件和遠程 Home 接口文件;提供本地客戶訪問能力的 Bean 必須提供本地接口文件和本地 Home 接口文件(不包含 Messagedriven Bean)。 ? 組件類:組件接口中定義的方法,在此類文件中提供實現(xiàn)。 將以上文件打包成為 EJB JAR 文件之后,形成一個 EJB 模塊,可連同其他模塊裝配到不同的表示 Java EE 應用的 EAR 文件中。 . EJB 組件模型的靈活性 EJB 組件模型的靈活性表現(xiàn)在 : ? EJB 可作為表示無狀態(tài)服務的對象; ? EJB 可作為表示無狀態(tài)服務的對象,可通過向指定的消息隊列或主題發(fā)送 JMS 消息,以實現(xiàn)對此對象的異步調用; ? EJB 可作 為表示與特定客戶的會話對象。此類對象在客戶進行跨越方法的調用時,自動維持會話狀態(tài); ? EJB 可作為表示業(yè)務對象的實體對象,在多個客戶間共享; ? EJB 可作為一個細粒度的持久對象,包含在一個粗粒度業(yè)務對象的持久狀態(tài)中。 通常,被遠程訪問的組件往往是粗粒度的業(yè)務對象,如訂單、雇員紀錄;細粒度的業(yè)務對象往往不會采用可遠程訪問的 EJB 組件模型,如訂單中的采購項、雇員紀錄中的地址,而是采用可本地訪問的 EJB 組件模型或是作為 EJB 的附屬類出現(xiàn)。 . 何時使用 EJB 組件 下面是在使用 EJB組件模型構建企業(yè)應用 時,一些判斷 EJB 組件模型是否適用的標準。 ? EJB 組件是構建分布式企業(yè)應用的組件模型技術; EJB 組件規(guī)范是針對分布式企業(yè)應用制定的,是基于分布式對象技術的 Java 組件; EJB 組件不涉及表示層的內容,因此,必須與其他表示層技術一起使用;應用服務器提供了可以解決安全性、資源共享、持續(xù)運行、并行處理、事務完整性等復雜問題的服務,從而簡化了商業(yè)應用系統(tǒng)。 ? 應用客戶端類型的考慮; 一般,企業(yè)應用開發(fā)都會有多種類型的客戶端的需求,訪問相同的數據或業(yè)務邏輯。如使用 Web 客戶提供對應用的基于 Inter 的訪問,使用應用客戶端提應用基于 Intra 的訪問。 EJB組件模型將業(yè)務邏輯與數據封裝到 EJB 組件中,提供對多種客戶端的支持。 ? 應用數據與業(yè)務邏輯的并發(fā)訪問控制的考慮; 企業(yè)應用通常需要提供數據或業(yè)務邏輯的并發(fā)訪問能力,以此保證數據的完整性,由于 EJB 組件控制對后臺數據的訪問,并管理當前事務和數據庫的內部鎖定。節(jié)省了編寫數據庫控制邏輯的工作量,同時也保證了數據的一致性與正確性,從而降低了總編程量。 ? 全局事務控制的考慮; 企業(yè)應用通常需要對不同的資源進行事務性的操作,如某個操作需要對數據庫進行訪問,同時可能需 要通過 JMS 消息服務發(fā)送消息,或者,需要訪問兩個位于不同物理位置的異種數據庫,這些操作必須在相同的事務環(huán)境中完成。 Apusic 應用服務器提供了全局事務控制,使得對數據庫的操作和對消息服務的操作可以加入到一個事務環(huán)境中,而這個特性對開發(fā)者而言是透明的,由應用服務器內部的事務管理器對事務環(huán)境中的操作進行管理。 ? 基于訪問控制的考慮; 企業(yè)應用中往往需要對某些資源進行訪問控制,如需要針對不同用戶對組件方法調用設置訪問控制策略,對訪問特定 Web 資源的用戶設置訪問控制策略等, Apusic 應用服務器提供了基于用戶和組 的身份鑒定和授權機制,可以通過部署描述和圖形工具實現(xiàn)對 Web 資源的訪問控制和對 EJB組件的方法級別的訪問控制。 ? 基于伸縮性的考慮; 企業(yè)應用的用戶規(guī)模往往成為影響企業(yè)應用開發(fā)難度的主要因素,隨著企業(yè)經營規(guī)模的擴大,用戶規(guī)模也會隨之增長, Apusic 應用服務器提供了負載均衡與實效恢復的能力,可以在降低開發(fā)難度的情況下,通過增加服務器節(jié)點即可適應應用規(guī)模的快速增長。 ? 基于重用性的考慮; 企業(yè)應用往往涉及很多重復的業(yè)務邏輯和數據模型,使用 EJB 組件模型,可以通過修改部署描述文件在不同的應用中方便地重用這些組件 。 . 會話 Bean 摘要 本節(jié)將描述 Session Bean 的基本原理;開發(fā)過程中涉及的普遍過程;組件模型組成部分的開發(fā)規(guī)則及注意事項。 . 會話 Bean . 容器與會話 Bean 容器是為 EJB 組件提供運行時環(huán)境的系統(tǒng)。同一容器中可以部署多個 EJB 組件。容器提供客戶端通過 JNDI對已部署組件進行依賴注入( )或訪問 Home 接口( )的能力,即客戶端可請求容器注入會話 Bean 遠程接口或通過 JNDI 查找指定 EJB 組件的 Home 接口。 客戶端不能直接訪問 EJB 組 件的實例,只能通過 JNDI 查找指定組件的 Remote接口,通過 Remote 接口取得對組件接口的引用??蛻舳藢M件接口的方法調用,通過組件接口傳播到容器中對應的 EJB 組件實例。 下圖表示 EJB 組件及其接口與容器、客戶端間的關系: EJB 組件及其接口與容器、客戶端間的關系 . 會話 Bean 的會話狀態(tài) 容器為會話 Bean 提供運行時環(huán)境,并對會話 Bean 實例進行管理,因此,會話Bean 實例的狀態(tài)也由容器進行維護。根據狀態(tài)管理模式,可以將會話 Bean 劃分為有狀態(tài)( Stateful)會話 Bean 和無狀 態(tài)( Stateless)會話 Bean,有狀態(tài)會話 Bean的狀態(tài)由容器負責維護,而無狀態(tài)會話 Bean 則不需要容器進行狀態(tài)管理。 . 有狀態(tài) Session Bean 實例的鈍化與激活 對于當前容器中存在的有狀態(tài)會話 Bean 實例,為提供更有效的管理,容器需要將某些空閑的實例狀態(tài)從內存臨時轉移到存儲機制中。這種轉移稱為實例的鈍化( Passivation),相反地,將實例狀態(tài)從存儲機制恢復,則稱為激活。( Activation)。 當實例被包含于某個事務中時,容器不能對實例進行鈍化操作。 . 會話狀態(tài) 有狀態(tài)會話 Bean 的會話狀態(tài)指會話 Bean 實例中的域值,連同實例中的域通過Java 對象引用指向的對象的傳遞閉包( transitive closure)。 注意 對象的傳遞閉包按照 Java 編程語言中的串行化協(xié)議定義,即是通過串行化對象實例,對實例的域進行保存。參考 Sun 的 對象串行化文檔 。 某些情況下,會 話對象的會話狀態(tài)可能會包含打開的資源,如網絡端口和數據庫連接等。當會話對象被鈍化時,容器不能鈍化這些資源,因此,需要開發(fā)者在容器對實例發(fā)出鈍化事件通知時(容器調用實例中注解為 PrePassivate 的方法 ()或ejbPassivate 方法),對上述資源進行關閉;在容器對實例發(fā)出激活事件通知時(容器調用實例中注解為 PostActivate 的方法或 ejbActivate 方法),重新打開上述資源。 因此在編寫有狀態(tài)的 Session Bean時,開發(fā)者必須注意,保證實例的非 transient域是下列類型 之一,使容器可以在鈍化實例時,可以完整保存對象的會話狀態(tài): ? 可串行化的對象; ? null 值; ? EJB 的業(yè)務接口引用; ? EJB 的遠程接口引用,即使 stub class 為非序列化亦可 ? EJB 的遠程 Home 接口引用,即使 stub class 為非序列化亦可; ? Entity Bean 的本地接口引用,即使其為非序列化亦可; ? EJB 的本地 Home 接口引用,即使其為非序列化亦可; ? 對 SessionContext 對象的引用,即使其為非序列化亦可; ? 環(huán)境命名上下文(指 “java:p/env”JNDI上下文)及其任何子上下文 ; ? UserTransaction 的引用; ? Resource manager 連接工廠的引用; ? 對容器管理的 EntityManager 對象的引用,即使其為非序列化亦可; ? 通過依賴注入或 JNDI 查找獲得的 EntityManagerFactory 引用,即使其為非序列化亦可; ? 對 對象的引用 ? 不可直接串行化的對象,但是通過在串行化對象期間,將對象的引用更改為對象的業(yè)務接口, Home 接口和組件接口的引用、對象對SessionContext 對象的引用、對象對 “java:p/env”JNDI 上下文及其子上下文的引用、對象對 UserTransaction 接口的引用、對象對EntityManager 與 EntityManagerFactory 的引用進行串行化,可將對象視為可串行化的對象。 . 事務操作與狀態(tài)域 會話 Bean的會話狀態(tài)是非事務性的。如對象在參與的事務中改變了狀態(tài),之后事務回滾,對象是不能自動回到參加事務前的狀態(tài)的。因此,在不能保證會話 Bean的會話狀態(tài)與事務狀態(tài)不一致的情況下,可以通過實現(xiàn) SessionSynchronization 接口,在 afterCompletion 方法發(fā)出的通知中,根據事務提交的情況,決定是否重新設置對象的會話狀態(tài)。 . 組件模型單元 對于會話 Bean,其組件模型包含以下幾部分: ? Home 接口,定義客戶端創(chuàng)建、清除 EJB 實例的方法; (注:在 組件模型中并不需要此接口) ? 組件接口( ponent interface),定義客戶端可訪問的組件的業(yè)務方法,在 組件模型中稱為業(yè)務接口 (business interface); ? 組件類,提供對定義在組件接口中的方法的實現(xiàn); ? 部署描述,包含此 EJB 的部署信息,如事務屬性等, 在 中可使用注解來描述部署信息。 下面分別對開發(fā)這些單元時,涉及的普遍過程、規(guī)則及注意事項進行描述。 . Home 接口 規(guī)范通過 Home 接口定義客戶端創(chuàng)建、清除 EJB對象的方法。 Home 接口有兩種類型,本地 Home 接口和遠程 Home 接口,分別提供給本地和遠程客戶端使用。在 中,可通過依賴注入, JNDI 查找,可選的生命周期回調
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1