<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    千里冰封
    JAVA 濃香四溢
    posts - 151,comments - 2801,trackbacks - 0
    關(guān)于session bean的一些問題
    EJB里面,session bean是占了挺重要的地位的,一些重要的事情都是交給session bean來處理的

    session BEAN一般用于操作一些對外的方法,供客戶調(diào)用.會話BEAN分兩種,一種 是有狀態(tài)的會話BEAN,一種 是無狀態(tài)的會話BEAN,它們有什么不同呢?

    有狀態(tài)的會話BEAN,會記錄每一個調(diào)用者的狀態(tài),每個人都有一個自己的實例,相比之下,它比較耗內(nèi)存.一般用于做專用的事情
    無狀態(tài)的會話BEAN,則不會記錄每一個調(diào)用者的狀態(tài),所有人共有一個實例,所以它不耗內(nèi)存,一般用于做一些通用的事情

    會話BEAN中有一種叫定時服務(wù),并不是所有的會話BEAN都可以有定時服務(wù)器,而只有無狀態(tài)的會話BEAN可以有定時的服務(wù),如果調(diào)用的是有狀態(tài)的會話BEAN的話,那么運行時就會出異常,不知道是不是有狀態(tài)的會話BEAN不允許有定時服務(wù).對于會話BEAN,我們可以掌握它的生命周期

    EJB容器創(chuàng)建和管理session bean實例,有些時候,你可能需要定制 session bean的管理過程。例如,你可能想在創(chuàng)
    建session bean實例的時候初始化字段變量,或在bean實例被銷毀的時候關(guān)掉外部資源。上述這些,你都可能通過
    在 bean 類中定義生命周期的回調(diào)方法來實現(xiàn)。這些方法將會被容器在生命周期的不同階段調(diào)用(如:創(chuàng)建或銷
    毀時)。通過使有下面所列的注釋,EJB 3.0允許你將任何方法指定為回調(diào)方法。這不同于 EJB 2.1,EJB 2.1中,
    所有的回調(diào)方法必須實現(xiàn),即使是空的。EJB 3.0中,bean可以有任意數(shù)量,任意名字的回調(diào)方法。
    ·@PostConstruct:當(dāng)bean對象完成實例化后,使用了這個注釋的方法會被立即調(diào)用。這個注釋同時適用于
    有狀態(tài)和無狀態(tài)的會話bean。
    ·@PreDestroy:使用這個注釋的方法會在容器從它的對象池中銷毀一個無用的或者過期的 bean 實例之前調(diào)
    用。這個注釋同時適用于有狀態(tài)和無狀態(tài)的會話 bean。
    ·@PrePassivate:當(dāng)一個有狀態(tài)的session bean實例空閑過長的時間,容器將會鈍化(passivate)它,并把它的
    狀態(tài)保存在緩存當(dāng)中。使用這個注釋的方法會在容器鈍化bean實例之前調(diào)用。這個注釋適用于有狀態(tài)的會話bean。
    當(dāng)鈍化后,又經(jīng)過一段時間該 bean 仍然沒有被操作,容器將會把它從存儲介質(zhì)中刪除。以后,任何針對該 bean
    方法的調(diào)用容器都會拋出例外。
    ·@PostActivate:當(dāng)客戶端再次使用已經(jīng)被鈍化的有狀態(tài) session bean 時,新的實例被創(chuàng)建,狀態(tài)被恢復(fù)。
    使用此注釋的session bean會在bean的激活完成時調(diào)用。這個注釋只適用于有狀態(tài)的會話 bean。
    ·@Init:這個注釋指定了有狀態(tài)session bean初始化的方法。它區(qū)別于@PostConstruct注釋在于:多個@Init
    注釋方法可以同時存在于有狀態(tài)session bean 中,但每個 bean實例只會有一個@Init注釋的方法會被調(diào)用。這取
    決于bean是如何創(chuàng)建的(細節(jié)請看EJB 3.0規(guī)范)。@PostConstruct在@Init之后被調(diào)用。
     
    另一個有用的生命周期方法注釋是@Remove,特別是對于有狀態(tài) session bean。當(dāng)應(yīng)用通過存根對象調(diào)用使用了
    @Remove注釋的方法時,容器就知道在該方法執(zhí)行完畢后,要把 bean實例從對象池中移走。

    這里要注意的一點是,對于無狀態(tài)的會話BEAN,即使你調(diào)用了標(biāo)記為@Remove的方法,這個會話BEAN依然有效,所以,這個注釋應(yīng)該用在有狀態(tài)的會話BEAN中,這樣當(dāng)你調(diào)用了它所標(biāo)記的方法 后,再調(diào)用這個會話BEAN的其它方法就會拋出一個異常
    javax.ejb.EJBNoSuchObjectException: Could not find Stateful bean:它會說找不到這個有狀態(tài)的會話BEAN了,因為這個時候經(jīng)過你調(diào)用了標(biāo)記為@Remove的方法后,EJB容器已經(jīng)將它銷毀了,以后的任何調(diào)用都是無效的了,這樣有利于我們更好的掌握會話BEAN的生命周期,免得產(chǎn)生很有有狀態(tài)的會話BEAN的時候,過多的消耗服務(wù)器的內(nèi)存.




    盡管千里冰封
    依然擁有晴空

    你我共同品味JAVA的濃香.
    posted on 2007-09-10 14:31 千里冰封 閱讀(898) 評論(0)  編輯  收藏 所屬分類: JAVAEE
    主站蜘蛛池模板: 日韩不卡免费视频| 99精品视频在线观看免费播放| 久久精品a一国产成人免费网站| 亚洲精品中文字幕无码AV| 久久国产乱子伦免费精品| 亚洲国产精品热久久| 污视频在线免费观看| 亚洲色欲或者高潮影院| 精品免费久久久久久久| 亚洲av永久无码精品三区在线4| 在线观看无码AV网站永久免费| 亚洲欧美日韩中文高清www777| 日日操夜夜操免费视频| 羞羞视频在线免费观看| 国外亚洲成AV人片在线观看| 久久狠狠躁免费观看| 亚洲中文字幕久在线| 日韩免费视频播放| 一区二区视频在线免费观看| 亚洲精品无码不卡在线播放| 日本免费一二区在线电影| 一区二区三区免费在线视频| 日本亚洲欧洲免费天堂午夜看片女人员 | 久久久久久国产精品免费免费| 亚洲女子高潮不断爆白浆| 亚洲国产一成久久精品国产成人综合 | a级毛片毛片免费观看永久| 久久精品国产亚洲AV无码娇色| 日日狠狠久久偷偷色综合免费| 亚洲人成网站在线播放vr| 国产亚洲精品免费| 国产亚洲无线码一区二区| 91九色精品国产免费| 人妻无码中文字幕免费视频蜜桃| 亚洲精品无码av人在线观看| 一个人免费观看视频www| 又粗又长又爽又长黄免费视频 | 国产va精品免费观看| 一区二区在线视频免费观看| 亚洲电影在线免费观看| 亚洲精品无码av天堂|