wayne

          EJB3 (1)

          新建一個(gè)EJB模塊
          先寫一個(gè)最簡(jiǎn)單的無狀態(tài)Session Bean,首先定義一個(gè)遠(yuǎn)程接口:

          @Remote
          public interface HelloRemote {

              String sayHi(String name);
              
          }
          用@Remote標(biāo)注表明這是一個(gè)遠(yuǎn)程接口,在接口里聲明一些業(yè)務(wù)方法。接著定義一個(gè)會(huì)話Bean實(shí)現(xiàn)該接口:
          @Stateless
          public class HelloBean implements HelloRemote {

              
          public String sayHi(String name) {
                  
          return "Hi " + name;
              }

              
          }

          @Stateless標(biāo)注表明這是一個(gè)無狀態(tài)會(huì)話Bean,完成了這個(gè)簡(jiǎn)單的Demo后,打包部署到服務(wù)器上。接著我們來測(cè)試這個(gè)會(huì)話Bean,新建一個(gè)WEB模塊,我們利用這個(gè)web應(yīng)用來遠(yuǎn)程調(diào)用會(huì)話Bean。我們可以在web模塊里新建一個(gè)Servlet:
          public class HelloServlet extends HttpServlet {
              @EJB
              
          private HelloRemote helloBean;
          在Servlet里定義了一個(gè)成員變量,@EJB標(biāo)注表明遠(yuǎn)程接口的代理將依賴注入到成員變量,在doGet或doPost方法里可以直接使用該代理調(diào)用會(huì)話Bean的業(yè)務(wù)方法:
          PrintWriter out = response.getWriter();
                  
          try {
                     out.println(helloBean.sayHi(
          "Tom"));
                  }
           finally 
                      out.close();
                  }
          JSP卻有所不同,這里不能使用@EJB標(biāo)注,要使用傳統(tǒng)的JNDI lookup方式:
          <%
                      InitialContext ctx 
          = new InitialContext();
                      HelloRemote helloBean 
          = (HelloRemote)ctx.lookup(HelloRemote.class.getName());
                      out.println(helloBean.sayHi(
          "Tom"));
          %>

          這個(gè)測(cè)試用web模塊已經(jīng)完成,將WEB模塊打包部署后即可以運(yùn)行
          不過,如果我們自己指定了會(huì)話Bean的JNDI名,那么以上的測(cè)試代碼將發(fā)生異常,例如:
          @Stateless(mappedName="hello")
          public class HelloBean implements HelloRemote {

              
          public String sayHi(String name) {
                  
          return "Hi " + name;
              }

              
          }

          這里我們指定了會(huì)話bean的JNDI名為"hello",更改后的EJB模塊需要重新部署,還要更改相應(yīng)的Servlet和Jsp中的代碼:
          @EJB(mappedName="hello")
              
          private HelloRemote helloBean;

          Servlet已經(jīng)更改了,只有一點(diǎn)點(diǎn)不同。
          <%
                      InitialContext ctx 
          = new InitialContext();
                      HelloRemote helloBean 
          = (HelloRemote)ctx.lookup("hello");
                      out.println(helloBean.sayHi(
          "Tom"));
                  
          %>

          Jsp也做了小小的改動(dòng),如此更新后重新部署WEB模塊,測(cè)試代碼即可順利運(yùn)行

          posted on 2008-09-12 20:49 waynemao 閱讀(113) 評(píng)論(0)  編輯  收藏 所屬分類: Java ee


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


          網(wǎng)站導(dǎo)航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          default

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 略阳县| 右玉县| 亳州市| 天等县| 封开县| 虹口区| 宾阳县| 温泉县| 抚州市| 北流市| 苍梧县| 阳泉市| 江源县| 句容市| 建湖县| 黎川县| 枣庄市| 长岭县| 时尚| 彭阳县| 得荣县| 永州市| 商河县| 台南县| 谢通门县| 和平县| 绍兴市| 荥经县| 邓州市| 孝义市| 广东省| 成安县| 景德镇市| 奇台县| 平乡县| 横峰县| 双峰县| 武定县| 阿克苏市| 宜兴市| 公主岭市|