Let's go inside

          this blog is deprecated as a result of laziness.
          posts - 59, comments - 2, trackbacks - 0, articles - 0

          TrailBlazer第8天--Message Driven POJOs

          Posted on 2006-07-27 15:17 Earth 閱讀(251) 評論(0)  編輯  收藏 所屬分類: JavaEE5/EJB3

          一、定義服務(wù)接口,并用@Producer標(biāo)注
          Calculator.java?

          package ?trail.mdpojo;
          ?
          import ?org.jboss.annotation.ejb.Producer;
          ?@Producer
          ?
          public ? interface ?Calculator?{
          ?
          ???
          public ? void ?doCalculation?( long ?sent,? int ?start,? int ?end,
          ??????????????????????????????
          double ?growthrate,
          ??????????????????????????????
          double ?saving);?
          ?}?


          二、定義服務(wù)實(shí)現(xiàn),并用@Consumer標(biāo)注,同MDB一樣,如果所監(jiān)聽的消息隊(duì)列不存在,JBoss會自動創(chuàng)建一個,不需要任何XML配置文件
          MdpojoCalculator.java?

          ? package ?trail.mdpojo;
          ?
          import ?org.jboss.annotation.ejb.Consumer;
          ?
          import ?javax.ejb. * ;
          ?
          import ?java.sql.Timestamp;
          ?
          ?@Consumer(activationConfig?
          =
          ?{
          ???@ActivationConfigProperty(propertyName
          = " destinationType " ,
          ?????propertyValue
          = " javax.jms.Queue " ),
          ???@ActivationConfigProperty(propertyName
          = " destination " ,
          ?????propertyValue
          = " queue/mdpojo " )
          ?})
          ?
          public ? class ?MdpojoCalculator? implements ?Calculator?{
          ?
          ???
          public ? void ?doCalculation?( long ?sent,? int ?start,? int ?end,? double ?growthrate,?

          double ?saving)?{
          ?
          ?????
          double ?result? = ?calculate?(start,?end,?growthrate,?saving);
          ?????RecordManager.addRecord?(
          new ?Timestamp(sent),?result);
          ?
          ?????System.out.println?(
          " The?MD?POJO?is?invoked " );
          ???}
          ???
          //
          ?}??

          三、Message Driven POJOs的使用
          ???????如果要使用MDPOJO,你首先需要從JNDI中查找@Producer接口所對應(yīng)的stub object,
          這個stub object實(shí)現(xiàn)了Producer接口的同時(shí)還實(shí)現(xiàn)了ProducerObject接口。你需要用ProducerObject.getProducerManager()得到一個ProducerManager然后調(diào)用manager.connect().它會創(chuàng)建一個JMS連接。接下來就可以使用@Producer中定義的服務(wù)了。
          calculator.jsp?

          ? <% @?page? import = " trail.mdpojo.*,?javax.naming.*,?java.text.*,
          ??????????????????org.jboss.ejb3.mdb. * " %>
          ?
          ?
          <%
          ???
          if ?( " send " .equals(request.getParameter?( " action " )))?{
          ?
          ?????
          int ?start? = ?Integer.parseInt(request.getParameter?( " start " ));
          ?????
          int ?end? = ?Integer.parseInt(request.getParameter?( " end " ));
          ?????
          double ?growthrate? = ?Double.parseDouble(request.getParameter?( " growthrate " ));
          ?????
          double ?saving? = ?Double.parseDouble(request.getParameter?( " saving " ));
          ?
          ?????
          // ?The?sent?timestamp?acts?as?the?message's?ID
          ????? long ?sent? = ?System.currentTimeMillis();
          ?
          ?????Calculator?cal?
          = ? null ;
          ?????ProducerManager?manager?
          = ? null ;
          ?????
          try ?{
          ?
          ???????InitialContext?ctx?
          = ? new ?InitialContext();
          ???????cal?
          = ?(Calculator)?ctx.lookup(
          ???????????????????Calculator.
          class .getName());
          ???????
          // ?cal?=?(Calculator)?ctx.lookup(
          ???????
          // ?????????????"EJB3Trail/MdpojoCalculator/remote");
          ??????ProducerObject?po? = ?(ProducerObject)?cal;
          ???????manager?
          = ?po.getProducerManager();
          ?
          ?????}?
          catch ?(Exception?e)?{
          ???????e.printStackTrace?();
          ?????}
          ?
          ?????manager.connect();?
          // ?internally?create?a?JMS?connection
          ????? try ?{
          ???????cal.doCalculation(sent,?start,?end,
          ?????????????????????????growthrate,?saving);
          ?????}?
          finally ?{
          ???????manager.close();?
          // ?clean?up?the?JMS?connection
          ?????}
          ?
          %> ?


          ?

          主站蜘蛛池模板: 云南省| 广河县| 米林县| 鹰潭市| 佳木斯市| 响水县| 吐鲁番市| 宁武县| 桑植县| 延庆县| 蒙城县| 南丰县| 剑川县| 将乐县| 永嘉县| 福安市| 绥棱县| 响水县| 凤城市| 新巴尔虎右旗| 郧西县| 剑阁县| 南召县| 西乌珠穆沁旗| 萍乡市| 莎车县| 都兰县| 正阳县| 张家界市| 梨树县| 临泽县| 永州市| 娄烦县| 临武县| 贵南县| 冷水江市| 正定县| 周口市| 曲麻莱县| 和龙市| 淮滨县|