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

正文內(nèi)容

ejb開發(fā)手冊-閱讀頁

2024-11-02 11:15本頁面
  

【正文】 程接口方法必須定義一個或多個 create 方法。無狀態(tài) Session Bean 的 create 方法在組件類中的匹配方法只能命名為 “ejbCreate()”的形式。 ? create 方法的返回值類型必須是 Session Bean 的遠(yuǎn)程接口; ? create 方法必須聲明拋出 異常; . 代碼范例 Home 接口通過定義一個或多個 create 方法,提供一種或多種創(chuàng)建 session對象的方式。 create 方法的返回值類型為 Bean 的遠(yuǎn)程接口類型。 Cart createLargeCart(String customerName, String account) throws RemoteException, BadAccountException, CreateException。 CartHome cartHome = (CartHome) ( (“java:p/env/ejb/cart”), )。 . 本地 Home 接口 本地 Home 接口使本地客戶端可以: ? 創(chuàng)建新的 Session 對象; ? 清除一個 Session 對象; . 編寫本地 Home 接口的規(guī)則 如果 EJB需要提供本地客戶端的訪問,必須提供 EJB的本地 Home 接口,開發(fā)人員必須遵循如下規(guī)則進(jìn)行編寫: ? 本地 Home 接口必須擴(kuò)展( extend) 接口; ? 定義在接口 中的方法不能拋出 異常; ? 在繼承關(guān)系上,本地接口可以擴(kuò)展已有的接口; ? 本地接口方法必須定義一個或多個 create 方法。無狀態(tài) Session Bean 的 create 方法在組件類中的匹配方法只能命名為 “ejbCreate()”的形式。 ? create 方法的返回值類型必須是 Session Bean 的本地接口; ? create 方法必須聲明拋出 異常; . 代碼范例 客戶端可通過類似如下代碼,對已部署在應(yīng)用服務(wù)器上的 Session Bean 的本地Home 接口進(jìn)行查找: Context initialContext = new InitialContext()。 . 業(yè)務(wù)(組件)接口 會話 Bean 和實體 Bean 的客戶端不能直接訪問 EJB 組件類的實例,客戶端程序通過業(yè)務(wù)接口訪問 EJB 組件,開發(fā)者在業(yè)務(wù)接口中定義可供客戶端訪問的業(yè)務(wù)方法。 . 遠(yuǎn)程接口 如果 EJB 需要被遠(yuǎn)程客戶端訪問,必須提供 EJB的遠(yuǎn)程接口,遠(yuǎn)程接口為組件提供以下支持: ? 定義 EJB 對象的業(yè)務(wù)邏輯方法, 遠(yuǎn)程接口 把對業(yè)務(wù)方法的調(diào)用傳播到 Session Bean 實例; ? 提供允許客戶端取得遠(yuǎn)程 Home 接口實例引用的方法; ? 提供使客戶端取得 Session 對象句柄的方法; ? 提供比較兩個 EJB 實例是否相等的方法; ? 移除 Session Bean 實例的方法; . 必須遵守的的規(guī)則 開發(fā)人員必須遵循如下規(guī)則編寫遠(yuǎn)程接口: ? 遠(yuǎn)程接口必須使用 Remote 注解標(biāo)記( ),或擴(kuò)展( extend) 接口( ); ? 若使用 規(guī)范,定義在接口中的方法的參數(shù)和 返回值必須是合法的 RMI類型,并且必須顯式聲明拋出 異常; ? 在繼承關(guān)系上,遠(yuǎn)程接口可以擴(kuò)展已有的接口,但繼承的方法必須依從上一規(guī)則; ? 每個在遠(yuǎn)程接口中定義的方法,必須在組件類中有一個匹配的方法,組件類中的匹配方法必須與接口中定義的方法具有相同的名字、相同的參數(shù)個數(shù)、參數(shù)類型和相同的返回值,而且所有在遠(yuǎn)程接口中定義的拋出的異常也必須在匹配方法中定義; ? 遠(yuǎn)程接口方法不可暴露本地接口類型、本地 Home 接口類型,而且,對于容器管理持久性 Entity Bean,也不可暴露 作為 Entity Bean 中方法參數(shù)和返回值的受管理的集合類( collection)。 public void removeBook(String title) throws BookException, RemoteException。 } 在 中,可使用以下形式達(dá)到同樣效果: Remote public interface Cart extends EJBObject { public void addBook(String title) throws RemoteException。 public Vector getContents() throws RemoteException。但使用本地接口可以為 EJB 提供細(xì)粒度的業(yè)務(wù)方法,獲得更好的可重用、與可維護(hù)性與運行效率。 . 必須遵守的規(guī)則 開發(fā)人員必須遵循如下規(guī)則編寫本地接口: ? 本地接口必須使用 Local 注解進(jìn)行標(biāo)記,或擴(kuò)展( extend) 接口; ? 本 地 接 口 中 定 義 的 方 法 不 能 聲 明 拋 出 異常; ? 在繼承關(guān)系上,本地接口可以擴(kuò)展已有的接口; ? 每個在本地接口中定義的方法,必須在組件類中有一個匹配的方法,組件類中的匹配方法必須與接口中定義的方法具有相同的名字、相同的參數(shù)個數(shù)、參數(shù)類型和相同的返回值,而且所有在遠(yuǎn)程接口中定義的拋出的異常也必須在匹配方法中定義; . 組件類 對于一個 Session Bean 組件,開發(fā)者在業(yè)務(wù)(組件)接口中定義的的業(yè)務(wù)方法和在 Home 接口中定義的 create 方法,需要在組件類中對這些方法提供實現(xiàn)。在 中的組件類則不必實現(xiàn) 接口,而是通過依賴注入、JNDI查找 、生存周期回調(diào)方法注解達(dá)到同樣的功能。在組件中常用的注解有以下幾個: . Resource 注解 在組件類中可以使用 Resource 注解通知容器對上下文資源進(jìn)行依賴注入,特別地,可以注入 SessionContext 實例: Stateless public class EmployeeServiceBean implements EmployeeService{ Resource SessionContext ctx。可以在該方法中對依賴注入后的會話 Bean 狀態(tài)進(jìn)行初試化。該方法由客戶端調(diào)用,若成功完成,容器將清除會話 Bean。 在會話 Bean組件類中可使用 PreDestroy 注解標(biāo)記容器清除會話 Bean前的回調(diào)方法。一般,實例可以在此方法中對實例占用的資源進(jìn)行釋放。同樣,當(dāng)實例將被再次激活( Activate)時,容器會調(diào)用被標(biāo)記為 PostActivate的方法。一般的 Session Bean 都會忽略此事件,但是,對于使用某些不可串行化的資源,如與特定數(shù)據(jù)庫的連接等,作為實例狀態(tài)一部分的 Session Bean,通常需要在 ejbPassivate 方法中釋放資源,在 ejbActivate 方法中重新獲取資源。通過實現(xiàn)此接口,組件提供容器訪問組件的能力,實際上,容器不需要組件提供任何服務(wù),容器通過 中定義的接口方法訪問組件實例,主要是為了給組件提供訪問容器提供的服務(wù)的能力,并向組件實例發(fā)送通知其生存周期中重要事件的發(fā)生信息。 . setSessionContext 容器通過調(diào)用 setSessionContext 方法,將由容器維護(hù)的 Bean 實例的上下文( context)與 Bean 實例進(jìn)行關(guān)聯(lián)。 . ejbRemove 在實例將被容器清除時,容器會調(diào)用此方法。 . ejbPassivate 與 ejbActivate 在實例將被容器鈍化( Passivate)時,容器會調(diào)用 ejbPassivate 方法。對于 使用某些不可串行化的資源,如與特定數(shù)據(jù)庫的連接等,作為實例狀態(tài)一部分的會話 Bean,通常需要在 ejbPassivate 方法中釋放資源,在 ejbActivate 方法中重新獲取資源。在 SessionContext 接口中,定義了如下方法: 185。只有容器管理事務(wù)的 Session Bean 可被允許使用此方法; ? getRollbackOnly 方法,檢查當(dāng)前事務(wù)是否已被標(biāo)記為回滾。只有容器管理事務(wù)的 Session Bean 可被允許使用此方法; ? getUserTransaction 方法,返回 接口。只有容器管理事務(wù)的 Session Bean可被允許使用此方法; . 可選的 SessionSynchronization 接口 會話 Bean 的組件類可以選擇是否實現(xiàn) 接口。 ? afterBegin 通知,標(biāo)志會話 Bean 實例一個新事務(wù)的開始。若會話 Bean 沒有實現(xiàn) SessionSynchronization 接口,則容器不會調(diào)用這些方法。 Apusic應(yīng)用服務(wù)器中的 EJB容器支持會話 Bean 的多個實例并發(fā)執(zhí)行;但是,每個會話 Bean 實例只會看到依次進(jìn)行的方法調(diào)用,因此開發(fā) Session Bean 時,不需要 將其以可重入( reentrant)的方式進(jìn)行編寫。當(dāng)某個客戶端對某特定的會話 Bean 實例的業(yè)務(wù)方法調(diào)用正在執(zhí)行中,從相同或不同的客戶端發(fā)出了另一個客戶端調(diào)用,容器將對第二個客戶端調(diào)用拋出 或,這取決于第二個客戶端調(diào)用是通過遠(yuǎn)程或本地組件接口進(jìn)行調(diào)用。 ? 業(yè)務(wù)方法必須被聲明為 public 方法; ? 業(yè)務(wù)方法不能被聲明為 final 或 static; ? 如業(yè)務(wù)方法是對應(yīng)于會話 Bean 遠(yuǎn)程接口中定義的業(yè)務(wù)方法,則方法參數(shù)和返回值必須是合法的 RMI/IIOP 類型; ? 可以拋出任意應(yīng)用級異常; 注意 允許業(yè)務(wù)方法拋出 ,以指出非應(yīng)用級的異常。 . 代碼范例 以下是一個會話 Bean 組件類的范例代碼,其對應(yīng)的組件接口和 Home 接口,請參考本章中關(guān)于組件接口和 Home 接口中的范例部分: import .*。 public class CartBean implements SessionBean { String customerName。 Vector contents。 } else { customerName = person。 contents = new Vector()。 } else { customerName = person。 if ((id)) { customerId = id。 } contents = new Vector()。 } public void removeBook(String title) throws BookException { boolean result = (title)。 } } public Vector getContents() { return contents。 有狀態(tài)會話 Bean實例的生命周期開始于用戶端通過依賴注入或 JNDI查找獲得一個有狀態(tài)會話 Bean 實例的引用,或者用戶端調(diào)用了會話 Bean 的 Home 接口中的createMETHOD方法。然后容器將注入 SessionContext 實例(若可用), 并執(zhí)行其它由元數(shù)據(jù)注解標(biāo)記的或在部署描述符中設(shè)定的依賴注入。如果會話 Bean 遵照 規(guī)范,則容器調(diào)用實例中匹配的 ejbCreateMETHOD或 Init 方法?,F(xiàn)在實例進(jìn)入就緒狀態(tài),客戶端可以調(diào)用其業(yè)務(wù)方法。 容器的緩沖算法決定會話 Bean實例是否需要移出內(nèi)存(例如采取最近最久未使用算法)。然后,容器把實例的狀態(tài)信息保存到二級存儲設(shè)備中,會話 Bean進(jìn)入鈍化狀態(tài)。 當(dāng)會話 Bean 處于鈍化狀態(tài),容器可能會在會話 Bean 超時后清除該實例,超時信息在部署描述文件中設(shè)置。如果客戶端試圖通過業(yè)務(wù)接口調(diào)用任一方法,容器將拋出 異常。 如果客戶端調(diào)用了被標(biāo)記為 Remove 的方法,或者 home 接口或組件接口中的remove 方法,容器將在該方法成功完成后回調(diào)被標(biāo)記為 PreDestroy 的生存周期回調(diào)方法(若已定義)。此時所有對于該實例的引用都 將 失效 。如果使用 規(guī)范,則容器分別為遠(yuǎn)程客 戶 端拋 出 異 常, 為本 地 客戶 端拋 出 異常。 如果客戶端調(diào)用了鈍化狀態(tài)的會話 Bean 的方法,容器將激 活該實例。 如果 Remove 方法成功完成,或 Remove 方法中拋出了應(yīng)用異常而retainIfException 為假,或拋出了系統(tǒng)異常, SessionSynchronization 方法將不會被調(diào)用。 客戶端代碼對有狀態(tài) Session Bean 生存周期的控制只能創(chuàng)建(使用依賴注入、JNDI查找或 createMETHOD方法)和清除(使用 Remove 方法)。 . 無狀態(tài) Session Bean 的生存周期 因無狀態(tài) Session Bean 不會進(jìn)行被鈍化操作,因此,其生存周期只有兩個階段,不存在和就緒狀態(tài)。當(dāng)從 JMS 隊列( Queue)或主題( Topic)中接收到 JMS消息后,由容器對組件進(jìn)行
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1