国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

循速漸進學用Session Bean(四)

2019-11-18 15:45:27
字體:
來源:轉載
供稿:網友
session Bean要求、限制和許可

  在EJB規范中,對Session Bean有一些限制和要求。這些限制會指出哪些是bean必須做的,哪些是不能做的,以及bean必須實現的一些方法和接口。也有一些規范指出哪些處理是答應做的,這是為了避免你以為這些處理是被其它限制禁止的。

  實現SessionBean接口

  session bean必須實現javax.ejb.SessionBean接口

   聲明該類為Public,而不是Final或者Abstract

   要記住EJB容器需要創建bean實例,因此該類必須是public,而且不是抽象的。

  創建一個Pubic,無參數的構造器

   同樣,由于EJB容器必須創建bean的實例。假如構造器是PRotected或者private,容器就不能創建實例。

  不要實現finalize方法

   雖然你很少需要定義一個finalize方法,不過EJB規范中還是明文禁止在session和entity bean中定義finalize方法。假如你的bean需要做任何清除的操作,它們應該在ejbRemove或者ejbPassivate方法中進行。

  實現create方法和所有的remote方法

  一個session bean必須實現Home接口中指定的全部create方法,以及Remote接口中指定的全部方法。在實現這些方法時,有一些額外的要求:

  . 這些方法必須是public,而不能是static或者final

  . 參數和返回的類型必須是有效的RMI/IIOP返回類型。在通常的情況下,這意味著必須是原有的類型(int, char, double等),可串行化的對象或者Remote接口。

  . 方法名不能以ejb開頭(這將令EJB的配置工具感到迷惑,并且可能帶來沖突)

  可選擇的實現Remote接口

  對于一個bean可以實現Remote接口,這個特性也是挺重要的。在實現類中,其中的方法簽名必須和Reomote接口中的一樣,除了一點,就是實現類中的方法并不拋出RemoteException。也就是說,雖然對于Remote接口的每個方法,在實現類中都必須要有相應的方法對應,而且不需要作如下的聲明:

  public class ShoppingCartImpl implements SessionBean, ShoppingCart

  實現Remote接口的原因是:在漏掉一個方法時編譯器將會告訴你,也就是說,假如沒有實現Remote接口中的一個方法,編譯器將會產生一個錯誤。否則,你將不知道漏掉了一個方法,直到你運行一個配置工具或者是打包工具為止。越遲發現錯誤,就要花越長的時間來改正它。

  在實現Remote接口時,可能會碰到的問題是使用this要害字來傳送對象,而不是使用session context中的getEJBObject方法。通常,當使用this而不是getEJBObject時,編譯器將會產生一個錯誤,因為它期待一個實現Remote接口的對象,而實現類卻這樣做。通過實現Remote接口,你通過了編譯,但是你在運行時又碰到了錯誤,這是由于與EJB容器期待的不同,實現類并不是一個到Remote接口的正確引用。

  提示

  雖然實現Remote接口可以指出在編譯時的錯誤,但是這樣也會導致出現一些直到運行時才會發現的錯誤,令修改起來很費時間。所以你最好不要實現Remote接口,而在配置時發現一些錯誤。進入討論組討論。

  實現SessionSynchronization接口

  SessionSynchronization接口可以令一個session bean更好地控制一個事務是如何發生。

  在必要時擴展其它類

  你的實現類也可以是其它類的子類。實際上,該超類也可以是另一類bean的實現類。

  在必要時實現Helper方法

  一個實現類可能還有額外的helper方法,這些方法并不是Remote或者Home接口的一部分。對于這些方法的參數類型、返回值類型和可見性(public, protected, private)是沒有限制的。

  不要拋出RemoteException

  假如需要拋出一個和EJB有關的異常,拋出javax.ejb.EJBException代替。

  Remote和Home接口的限制

  除了對實現類有限制外,對于Remote和Home接口也有一些限制。這些限制大部分和實現類類似。

  Remote接口必須擴展javax.ejb.EJBObject

  當你使用一些配置工具時,例如WebLogic提供的工具,你將會發現它會自動知道哪個類包含有Remote接口。它尋找EJBObject接口來檢測到Remote接口。還有EJBObject接口包含有每個EJB都必須實現的一些方法。

  Home接口必須擴展javax.ejb.EJBHome

  和Remote接口必須擴展EJBObject一樣,EJBHome接口幫助標識Home接口,并且定義了一些你可以在每個Home接口上調用的方法。

  參數和返回類型必須符合RMI/IIOP

  這意味著它們必須是原始類型、可串行化對象或者Remote接口。

  所有的方法必須拋出java.rmi.RemoteException

  由于Home和Remote接口擴展java.rmi.Remote接口,所以接口的全部方法都必須拋出java.rmi.RemoteException。RMI規范明確規定在Remote接口的所有方法都必須拋出RemoteException。

  所有的方法都必須有相應的實現

  在一個典型的RMI實現中,這一點是毫無疑問的,這是由于實現類將會實現Remote接口。但是對于EJB,由于實現類并不需要實現Home和Remote接口,對于實現類和Home及Remote接口的關系,編譯器并沒有一個強制的規定。

  對于Home接口的每個create方法,在實現類中都必須有一個相應的ejbCreate方法。還有,create方法拋出CreateException。

  擴展其它的接口

  要支持Enterprise JavaBeans的子類,Home和Remote接口可以擴展其它的接口,只要父接口是擴展EJBObject(對于Remote接口)或者EJBHome(對于Home接口)。進入討論組討論。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蕉岭县| 随州市| 古丈县| 乌鲁木齐县| 封开县| 高唐县| 奇台县| 石嘴山市| 宁安市| 乌什县| 衡山县| 衢州市| 丰镇市| 盖州市| 阿坝县| 铅山县| 密山市| 醴陵市| 巴塘县| 北辰区| 三明市| 山东省| 五指山市| 沈阳市| 遂昌县| 乳源| 兰州市| 沾化县| 叙永县| 淳安县| 宁国市| 施秉县| 台东市| 剑阁县| 治县。| 鄂伦春自治旗| 洞口县| 简阳市| 佳木斯市| 宣汉县| 二连浩特市|