隨筆 - 0, 文章 - 75, 評(píng)論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          開發(fā)有狀態(tài)session bean

          盡管有狀態(tài)bean和無狀態(tài)bean在代碼上的區(qū)別不是很大
          但兩者才用的對(duì)bean的管理的技術(shù)是不一樣的



          Bean實(shí)例的兩種管理技術(shù):


          1.無狀態(tài)bean使用實(shí)例池技術(shù)管理bean


          bean" name="image_operate_57701323526900703" alt="開發(fā)有狀態(tài)session bean" src="http://s11.sinaimg.cn/middle/8020e411tb3bd6f63049a&690" real_src="http://s11.sinaimg.cn/middle/8020e411tb3bd6f63049a&690">
          實(shí)例池技術(shù)會(huì)被多個(gè)用戶所共享(和數(shù)據(jù)源技術(shù)是相同的)
          當(dāng)用戶從實(shí)例池取出一個(gè)對(duì)象后,這個(gè)對(duì)象是不能被其他用戶使用的
          當(dāng)用戶使用完這個(gè)對(duì)象后,這個(gè)對(duì)象還會(huì)被后面的對(duì)象所使用
          這樣可以大大減少對(duì)象的數(shù)量,來提高系統(tǒng)性能



          2.有狀態(tài)bean使用激活(activation)管理bean


          bean" name="image_operate_95751323526907265" alt="開發(fā)有狀態(tài)session bean" src="http://s15.sinaimg.cn/middle/8020e411tb3bd9efa3cde&690" real_src="http://s15.sinaimg.cn/middle/8020e411tb3bd9efa3cde&690">
          有許多個(gè)用戶來訪問,生成多個(gè)有狀態(tài)bean
          將這些有狀態(tài)bean緩存起來
          當(dāng)一個(gè)用戶訪問過bean后,可能過段時(shí)間才繼續(xù)訪問,也可能不訪問了
          可以去優(yōu)化這些有狀態(tài)bean:
          如果這個(gè)有狀態(tài)bean一段時(shí)間內(nèi)沒有被用戶訪問,則容器把有狀態(tài)bean用戶會(huì)話信息,序列化到硬盤上,并釋放內(nèi)存(鈍化)
          從內(nèi)存到硬盤上
          如果在總的緩存時(shí)間之內(nèi),用戶又發(fā)起了請(qǐng)求,這時(shí)EJB容器會(huì)把保存在硬盤上信息的bean又還原到內(nèi)存中,為用戶服務(wù);(激活)
          從硬盤到內(nèi)存中
          如果在緩存時(shí)間內(nèi)用戶沒有訪問(訪問超時(shí)),EJB容器有個(gè)線程,會(huì)把保存在硬盤上的bean信息清除掉;在總的緩存時(shí)間過后,再去訪問bean,會(huì)得到一個(gè)例外(異常),說這個(gè)bean已經(jīng)超時(shí)了
          采用激活技術(shù),大大提高了系統(tǒng)性能



          顯然,無狀態(tài)bean的性能是比有狀態(tài)bean的性能高
          無狀態(tài)bean用最少的對(duì)象,來為更多的用戶服務(wù)
          有狀態(tài)bean要為每一個(gè)用戶創(chuàng)建對(duì)象去服務(wù)



          如果不需要保存用戶狀態(tài)時(shí),優(yōu)先選用無狀態(tài)bean
          如果要為每個(gè)用戶保存他的會(huì)話信息時(shí),使用有狀態(tài)bean
          最經(jīng)典的有狀態(tài)bean的例子:購(gòu)物車


          -----------------------------------------------------------------



          有狀態(tài)bean的開發(fā)步驟和無狀態(tài)bean的開發(fā)步驟是比較相似的
          只需把@Stateless用于標(biāo)注無狀態(tài)bean的注解
          更換為:@Stateful
          有狀態(tài)bean
          即可完成有狀態(tài)bean的開發(fā),之后通過ant部署到j(luò)boss上



          代碼:


          @Stateful
          //有狀態(tài)bean
          @Remote(HelloWorld.class)//指定HelloWorld接口為遠(yuǎn)程接口、默認(rèn)是本地接口
          @Local(HelloWorldLocal.class)
          //使用本地接口
          public class HelloWorldBean implements HelloWorld,HelloWorldLocal
          {


          @Override
          public String
          sayHello(String name) {
          return
          name+"說:你好,世界!";
          }



          }


           

           

          posted on 2012-04-22 16:11 hantai 閱讀(70) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 香港| 土默特左旗| 张家界市| 乳山市| 拉孜县| 鹤峰县| 涿鹿县| 阜阳市| 桑日县| 察哈| 历史| 深圳市| 新兴县| 视频| 舟曲县| 天祝| 洛川县| 巴塘县| 龙南县| 鄄城县| 奉贤区| 灵璧县| 区。| 当雄县| 定陶县| 科技| 咸宁市| 抚远县| 隆安县| 河东区| 颍上县| 施秉县| 房产| 聊城市| 金塔县| 彰化市| 宁波市| 商河县| 诏安县| 鄱阳县| 原阳县|