隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          開發有狀態session bean

          盡管有狀態bean和無狀態bean在代碼上的區別不是很大
          但兩者才用的對bean的管理的技術是不一樣的



          Bean實例的兩種管理技術:


          1.無狀態bean使用實例池技術管理bean


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



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


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



          顯然,無狀態bean的性能是比有狀態bean的性能高
          無狀態bean用最少的對象,來為更多的用戶服務
          有狀態bean要為每一個用戶創建對象去服務



          如果不需要保存用戶狀態時,優先選用無狀態bean
          如果要為每個用戶保存他的會話信息時,使用有狀態bean
          最經典的有狀態bean的例子:購物車


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



          有狀態bean的開發步驟和無狀態bean的開發步驟是比較相似的
          只需把@Stateless用于標注無狀態bean的注解
          更換為:@Stateful
          有狀態bean
          即可完成有狀態bean的開發,之后通過ant部署到jboss上



          代碼:


          @Stateful
          //有狀態bean
          @Remote(HelloWorld.class)//指定HelloWorld接口為遠程接口、默認是本地接口
          @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) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 仙桃市| 清涧县| 东方市| 江山市| 灵璧县| 彩票| 屯昌县| 舟山市| 黔江区| 淮安市| 湟源县| 镇赉县| 平阳县| 从化市| 紫云| 大名县| 绩溪县| 宿松县| 海安县| 安图县| 鄂州市| 新化县| 巩义市| 丹阳市| 中阳县| 车险| 仲巴县| 阳山县| 平舆县| 锡林郭勒盟| 沙坪坝区| 望奎县| 福海县| 茶陵县| 阿拉善左旗| 万安县| 荥经县| 五原县| 三门峡市| 应用必备| 綦江县|