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

正文內容

ejb開發(fā)手冊-資料下載頁

2025-10-04 11:15本頁面

【導讀】平臺規(guī)范中定義的一種組件模。型,用于對分布式企業(yè)應用中的業(yè)務邏輯進行封裝。通過容器,應用服務器向EJB組件提供了多種底層系統(tǒng)服。務,諸如事務控制、分布式服務、安全控制等,因此,使用EJB技術開發(fā)業(yè)務組件,可以提高應用的開發(fā)、維護的效率,同時,也將提高應用的可移植性及可靠性。發(fā)人員可以更專注于特定的業(yè)務需求與模型。效而可靠的EJB容器。EJB組件模型規(guī)范中關于相關的接口、實現(xiàn)以及部署描述等等方面的規(guī)定。向EJB組件提供優(yōu)越的服務質量和其他增值特性,這也正是Apusic應。EJB實例由容器在運行時創(chuàng)建及管理;可在部署時通過編輯環(huán)境項定制EJB的。在部署和運行時,可通過工具對EJB的服務設置信息進行管。EJB可以不經(jīng)改動代碼或重新編譯,即可直接裝配到一個新的應。是運行于相同Java虛擬機中的本地EJB對象。但部署描述文件可以令管理人員在部署時更為。規(guī)范規(guī)定,當部署描述文件的信息與程序代碼中的注解信息出現(xiàn)沖突時,

  

【正文】 例發(fā)送通知其生存周期中重要事件的發(fā)生信息。 中定義了以下方法。 . setSessionContext 容器通過調用 setSessionContext 方法,將由容器維護的 Bean 實例的上下文( context)與 Bean 實例進行關聯(lián)。一般, Session Bean實例的上下文被作為實例會話狀態(tài)的一部分,被實例所保存。 . ejbRemove 在實例將被容器清除時,容器會調用此方法。一般,實例可以在此方法中對實例占用的資源進行釋放。 . ejbPassivate 與 ejbActivate 在實例將被容器鈍化( Passivate)時,容器會調用 ejbPassivate 方法。同樣,當實例將被再次激活( Activate)時,容器會調用 ejbActivate 方法。對于 使用某些不可串行化的資源,如與特定數(shù)據(jù)庫的連接等,作為實例狀態(tài)一部分的會話 Bean,通常需要在 ejbPassivate 方法中釋放資源,在 ejbActivate 方法中重新獲取資源。請參考第 節(jié) “有狀態(tài) Session Bean 實例的鈍化與激活 ” . SessionContext 接口 對于會話 Bean 實例,容器將提供一個 SessionContext 對象,使實例可以訪問由容器維護的實例的上下文環(huán)境。在 SessionContext 接口中,定義了如下方法: 185。 ? getEJBObject 方法,返回 Session Bean 的遠程接口; ? getEJBHome 方法,返回 Session Bean 的遠程 Home 接口; ? getEJBLocalObject,返回 Session Bean 的本地接口; ? getEJBLocalHome,返回 Sesson Bean 的本地 Home 接口; ? getCallerPrincipal 方法,返回標識調用此實例的調用者的 對象; ? isCallerInRole 方法,檢查此 Session Bean的調用者是否是某個特定的角色; ? setRollbackOnly 方法,當前事務將被永久標記為回滾,不會被提交。只有容器管理事務的 Session Bean 可被允許使用此方法; ? getRollbackOnly 方法,檢查當前事務是否已被標記為回滾。例如, EJB 實例可以通過此方法,判斷是否繼續(xù)在當前事務邊界內進行計算。只有容器管理事務的 Session Bean 可被允許使用此方法; ? getUserTransaction 方法,返回 接口。 EJB 實例可通過此接口對事務邊界進行劃分,并取得事務的狀態(tài)。只有容器管理事務的 Session Bean可被允許使用此方法; . 可選的 SessionSynchronization 接口 會話 Bean 的組件類可以選擇是否實現(xiàn) 接口。此接口對會話 Bean 提供事務的同步通知。 ? afterBegin 通知,標志會話 Bean 實例一個新事務的開始。當包含在事務中第一個的業(yè)務方法被調用之前,容器將調用此方法,后續(xù)的業(yè)務方法調用將會存在于此事務上下文中; ? afterCompletion 通知,標志一個會話 Bean事務的提交操作結束,并通知實例提交操作是成功還是回滾; ? beforeCompletion 通知,通知會話 Bean 實例事務將進行提交操作; 規(guī) 范 規(guī) 定 , 如 果 會 話 Bean 直 接 或 間 接 地 實 現(xiàn) 了SessionSynchronization 接口,容器必須回調 afterBegin, beforeCompletion 與afterCompletion 方法。若會話 Bean 沒有實現(xiàn) SessionSynchronization 接口,則容器不會調用這些方法。 . 串行化的會話 Bean 方法調用 容器將對每個會話 Bean實例的方法調用進行串行化。 Apusic應用服務器中的 EJB容器支持會話 Bean 的多個實例并發(fā)執(zhí)行;但是,每個會話 Bean 實例只會看到依次進行的方法調用,因此開發(fā) Session Bean 時,不需要 將其以可重入( reentrant)的方式進行編寫。 客戶端不能對有狀態(tài)的會話 Bean 對象進行并發(fā)調用。當某個客戶端對某特定的會話 Bean 實例的業(yè)務方法調用正在執(zhí)行中,從相同或不同的客戶端發(fā)出了另一個客戶端調用,容器將對第二個客戶端調用拋出 或,這取決于第二個客戶端調用是通過遠程或本地組件接口進行調用。 . 業(yè)務方法必須遵守的規(guī)則 會話 Bean的組件類中可以定義零到多個業(yè)務方法,其方法簽名和命名必須遵守 如下規(guī)則: ? 方法名是任意的,但不能使用 “ejb”開頭,以免與 EJB 組件架構中的容器管理回調方法發(fā)生沖突,如 ejbPassivate 方法 。 ? 業(yè)務方法必須被聲明為 public 方法; ? 業(yè)務方法不能被聲明為 final 或 static; ? 如業(yè)務方法是對應于會話 Bean 遠程接口中定義的業(yè)務方法,則方法參數(shù)和返回值必須是合法的 RMI/IIOP 類型; ? 可以拋出任意應用級異常; 注意 允許業(yè)務方法拋出 ,以指出非應用級的異常。在 和 兼容的 Enterprise Bean 開發(fā)中,這種方式不建議使用( deprecated), 兼容的 Enterprise Bean 開發(fā)中,不應從業(yè)務方法拋出。 . 代碼范例 以下是一個會話 Bean 組件類的范例代碼,其對應的組件接口和 Home 接口,請參考本章中關于組件接口和 Home 接口中的范例部分: import .*。 import .*。 public class CartBean implements SessionBean { String customerName。 String customerId。 Vector contents。 public void ejbCreate(String person) throws CreateException { if (person == null) { throw new CreateException(Null person not allowed.)。 } else { customerName = person。 } customerId = 0。 contents = new Vector()。 } public void ejbCreate(String person, String id) throws CreateException { if (person == null) { throw new CreateException(Null person not allowed.)。 } else { customerName = person。 } IdVerifier idChecker = new IdVerifier()。 if ((id)) { customerId = id。 } else { throw new CreateException(Invalid id: + id)。 } contents = new Vector()。 } public void addBook(String title) { (title)。 } public void removeBook(String title) throws BookException { boolean result = (title)。 if (result == false) { throw new BookException(title + not in cart.)。 } } public Vector getContents() { return contents。 } public CartBean() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} } . 生存周期 . 有狀態(tài) Session Bean 的生存周期 有狀態(tài) Session Bean 的生存周期 上圖表示有狀態(tài) Session Bean 的生存周期。 有狀態(tài)會話 Bean實例的生命周期開始于用戶端通過依賴注入或 JNDI查找獲得一個有狀態(tài)會話 Bean 實例的引用,或者用戶端調用了會話 Bean 的 Home 接口中的createMETHOD方法。這將通知容器調用會話 Bean 類的 newInstance 方法創(chuàng)建一個新的會話 Bean 實例。然后容器將注入 SessionContext 實例(若可用), 并執(zhí)行其它由元數(shù)據(jù)注解標記的或在部署描述符中設定的依賴注入。然后容器將調用會話Bean 的 PostConstruct 生存周期回調方法(若已定義)。如果會話 Bean 遵照 規(guī)范,則容器調用實例中匹配的 ejbCreateMETHOD或 Init 方法。最后,容器返回會話 Bean 的對象引用?,F(xiàn)在實例進入就緒狀態(tài),客戶端可以調用其業(yè)務方法。 根據(jù)會話 bean 元數(shù)據(jù)注解中的事務屬性或部署描述文件中的設定,以及客戶端調用所關聯(lián)的事務上下文,業(yè)務方法將會在一個特定的事務上下文環(huán)境或一個未指定的業(yè)務上下文環(huán)境中執(zhí)行( 在圖中分別以 “事務方法 ”與 “非事務方法 ”表示)。 容器的緩沖算法決定會話 Bean實例是否需要移出內存(例如采取最近最久未使用算法)。容器先回調 Bean實例的 PrePassivate 生存周期回調方法(若已定義)。然后,容器把實例的狀態(tài)信息保存到二級存儲設備中,會話 Bean進入鈍化狀態(tài)。在事務之中的會話 Bean 不能被鈍化。 當會話 Bean 處于鈍化狀態(tài),容器可能會在會話 Bean 超時后清除該實例,超時信息在部署描述文件中設置。此時所有對于該實例的引用都將失效。如果客戶端試圖通過業(yè)務接口調用任一方法,容器將拋出 異常。如果使用 規(guī)范,則容器分別為遠程客戶端拋出 異常,為本地客戶端拋出 異常。 如果客戶端調用了被標記為 Remove 的方法,或者 home 接口或組件接口中的remove 方法,容器將在該方法成功完成后回調被標記為 PreDestroy 的生存周期回調方法(若已定義)。這將終結會話 Bean 實例的生存周期。此時所有對于該實例的引用都 將 失效 。 如果 客戶 端 試圖 通過 業(yè) 務接 口調 用 任一 方法 , 容器 將拋 出 異常。如果使用 規(guī)范,則容器分別為遠程客 戶 端拋 出 異 常, 為本 地 客戶 端拋 出 異常。要注意即使客戶端沒有顯式調用Remove 方法,容器也會在 EJB 對象實例超時后主動調用其 PreDestroy 方法并清除該實例。 如果客戶端調用了鈍化狀態(tài)的會話 Bean 的方法,容器將激 活該實例。此時容器將先從二級存儲設備中恢復實例的狀態(tài)信息,并調用實例的 PostActivte 方法(若已定義)。 如果 Remove 方法成功完成,或 Remove 方法中拋出了應用異常而retainIfException 為假,或拋出了系統(tǒng)異常, SessionSynchronization 方法將不會被調用。如果拋出了應用異常而 retainIfException 為真,則該會話 bean實例既不會被清除也不會被丟棄, SessionSynchronization 方法(若已定義)將會在事務結束時被調用。 客戶端代碼對有狀態(tài) Session Bean 生存周期的控制只能創(chuàng)建(使用依賴注入、JNDI查找或 createMETHOD方法)和清除(使用 Remove 方法)。其他方法由EJB 容器進行調用。 . 無狀態(tài) Session Bean 的生存周期 因無狀態(tài) Session Bean 不會進行被鈍化操作,因此,其生存周期只有兩個階段,不存在和就緒狀態(tài)。下圖表示無狀態(tài) Session Bean 的生存周期: 無狀態(tài) Session Bean 的生存周期 . Messagedriven Bean . Messagedriven Bean Messagedriven Bean 是 JMS消息驅動的 Java EE?平臺服務器端組件,具備無狀態(tài)、支持事務的特點。當從 JMS 隊列( Queue)或主題( Topic)中接收到 JMS消息后,由容器對組件進行調用。一般,可理解為消息的監(jiān)聽器( Listener)及接收者( Consu
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1