posts - 18,comments - 26,trackbacks - 0

          EJB是J2EE中最重要的技術(shù)之一,它是支持分布式事務(wù)的分布式組件,我們以Hello World為例,編寫第一個(gè)名為Hello的最簡(jiǎn)單的Session Bean。

          根據(jù)EJB2.1規(guī)范,編寫一個(gè)Session Bean需要以下幾個(gè)類和接口:

          遠(yuǎn)程接口Hello,客戶端使用這個(gè)接口來(lái)訪問EJB:

          // Hello.java

          // 遠(yuǎn)程接口:EJBObject

          import javax.ejb.*;
          import java.rmi.*;

          public interface Hello extends EJBObject {
              // 業(yè)務(wù)方法,必須拋出RemoteException:
              public String say() throws RemoteException;
          }

          Home接口HelloHome,客戶端使用這個(gè)接口來(lái)創(chuàng)建EJB并在稍后調(diào)用其業(yè)務(wù)方法:

          // HelloHome.java

          // Home接口,負(fù)責(zé)創(chuàng)建EJB:

          import java.io.*;
          import java.rmi.*;
          import javax.ejb.*;

          public interface HelloHome extends EJBHome {
              // create方法需要拋出RemoteException和CreateException:
              Hello create() throws RemoteException, CreateException;
          }

          實(shí)現(xiàn)業(yè)務(wù)邏輯的類HelloBean,客戶端永遠(yuǎn)無(wú)法直接訪問它,只能通過遠(yuǎn)程接口來(lái)間接訪問它,HelloBean只有一個(gè)業(yè)務(wù)方法:

          // HelloBean.java

          // 實(shí)現(xiàn)真正業(yè)務(wù)方法的Bean,由容器管理,
          // 客戶端通過遠(yuǎn)程接口間接訪問它:

          import java.rmi.*;
          import javax.ejb.*;

          public class HelloBean implements SessionBean {
              private SessionContext ctx;
              public String say() {
                  return "Hello, world.";
              }
              public void setSessionContext(SessionContext ctx) {
                  this.ctx = ctx;
              }
              public void ejbCreate() {}
              public void ejbRemove() {}
              public void ejbActivate() {}
              public void ejbPassivate() {}
          }

          從上面可以看到,為了編寫一個(gè)Bean,需要額外的兩個(gè)接口支持,并且,由于HelloBean不實(shí)現(xiàn)Hello接口,這些方法申明和實(shí)現(xiàn)如果不一致,只有在部署時(shí)才能發(fā)現(xiàn)問題。某些工具(如XDoclet)可以根據(jù)特定的注釋自動(dòng)生成Remote和Home接口。在EJB 3.0規(guī)范中,開發(fā)者就只需要編寫B(tài)ean,剩下的Remote和Home接口都由工具根據(jù)EJB 3的注釋自動(dòng)生成,因此大大簡(jiǎn)化了開發(fā)。

          為了提高EJB的調(diào)用速度,如果客戶端和EJB容器位于同一個(gè)JVM內(nèi)(例如運(yùn)行在同一個(gè)JVM中的JSP和EJB),還可以使用本地接口,但是這兩個(gè)接口不是必需的,因此我們不去實(shí)現(xiàn)它。

          現(xiàn)在我們一共有3個(gè)文件:Hello.java,HelloHome.java,HelloBean.java,放在C:\example目錄下,然后開始編譯:

          C:\example>javac *.java

          在當(dāng)前目錄下可以找到編譯后的Hello.classHelloHome.classHelloBean.class三個(gè)文件。

          下載源碼:點(diǎn)擊下載

          下一步:部署(待續(xù))

          posted on 2005-09-22 19:35 瘦猴 閱讀(154) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 台北县| 浦东新区| 炎陵县| 梓潼县| 城口县| 阜平县| 息烽县| 台安县| 昭平县| 普洱| 湾仔区| 富川| 荆门市| 雷州市| 乐昌市| 千阳县| 合山市| 大渡口区| 五华县| 云浮市| 金溪县| 盘山县| 彰化市| 北流市| 北安市| 建水县| 樟树市| 保定市| 海南省| 林甸县| 成都市| 长岭县| 乐山市| 中卫市| 庆元县| 临高县| 丹棱县| 遂宁市| 商洛市| 阿瓦提县| 滦南县|