posts - 18,comments - 26,trackbacks - 0

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

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

          遠程接口Hello,客戶端使用這個接口來訪問EJB:

          // Hello.java

          // 遠程接口:EJBObject

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

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

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

          // HelloHome.java

          // Home接口,負責創(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;
          }

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

          // HelloBean.java

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

          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() {}
          }

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

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

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

          C:\example>javac *.java

          在當前目錄下可以找到編譯后的Hello.classHelloHome.classHelloBean.class三個文件。

          下載源碼:點擊下載

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 襄汾县| 富平县| 尼勒克县| 衡南县| 乌拉特前旗| 崇州市| 南陵县| 金沙县| 佛坪县| 屯留县| 凌海市| 修水县| 锦屏县| 施秉县| 青河县| 白河县| 八宿县| 吐鲁番市| 天全县| 竹溪县| 蓬莱市| 樟树市| 乌鲁木齐县| 柯坪县| 司法| 平塘县| 舒兰市| 湖南省| 绥中县| 普宁市| 津南区| 青田县| 清苑县| 大悟县| 灵山县| 新和县| 陕西省| 黔西| 桐庐县| 丽水市| 岳西县|