wayne

          EJB3 (1)

          新建一個EJB模塊
          先寫一個最簡單的無狀態Session Bean,首先定義一個遠程接口:

          @Remote
          public interface HelloRemote {

              String sayHi(String name);
              
          }
          用@Remote標注表明這是一個遠程接口,在接口里聲明一些業務方法。接著定義一個會話Bean實現該接口:
          @Stateless
          public class HelloBean implements HelloRemote {

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

              
          }

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

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

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

              
          }

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

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

          Jsp也做了小小的改動,如此更新后重新部署WEB模塊,測試代碼即可順利運行

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


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


          網站導航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          default

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 高青县| 开远市| 天等县| 海门市| 曲阳县| 施甸县| 双鸭山市| 栾城县| 岳池县| 石河子市| 九江县| 济南市| 宜城市| 泸溪县| 丹寨县| 遂宁市| 龙陵县| 长垣县| 句容市| 平度市| 静乐县| 阿荣旗| 合水县| 宁德市| 抚远县| 天水市| 防城港市| 铜陵市| 霍州市| 咸宁市| 博客| 尤溪县| 加查县| 丹东市| 余干县| 正安县| 永登县| 吉隆县| 惠州市| 法库县| 高邮市|