首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

建立你的第一個無狀態 Session Bean — HelloWorld 實戰教學 (第一部分:伺服器安裝與介面定義)

     編輯:J2EE

步驟 1:安裝企業 JavaBeans 伺服器

EJB 組件運行於 EJB 容器,由伺服器廠商提供。本教學使用 BEA WebLogic Tengah。

  1. 下載:https://www.weblogic.com/download.html
  2. 解壓縮 (jar/unzip),假設安裝於 /export/weblogic
  3. 下載 JDK:https://www.sun.com/solaris/java
  4. 設定 CLASSPATH:加入 weblogic/classes、weblogic/lib/weblogicaux.jar、當前目錄 .
  5. 設定 LD_LIBRARY_PATH:加入 weblogic/lib/solaris
  6. 編輯 weblogic.properties 設定系統密碼 weblogic.password.system
  7. 執行 startTengah.sh 啟動伺服器。透過命令列或主控台「分散式物件」→「Enterprise JavaBeans Transaction Server」驗證部署狀態。

註:說明以 Sun Solaris 為例,Windows NT 類似。

步驟 2:定義 Enterprise JavaBeans Remote 介面

Remote 介面是 EJB 的 Client 視圖,開發者以 Java RMI 語法宣告,實作由容器工具產生。限制:所有物件、參數、回傳值、例外須符合「Java to IDL Mapping Specification」有效類型。

package ejb.demo;
import java.rmi.RemoteException; import java.rmi.Remote; import javax.ejb.*;

public interface Demo extends EJBObject, Remote {
    // 最簡單範例:不查資料庫,直接回傳字串
    public String demoSelect() throws RemoteException;
}

步驟 3:定義 Home 介面

Session Bean 的 Home 介面提供機制讓容器代表 Client 建立新 Session Bean。同樣由開發者用 RMI 宣告,容器工具實作,屬宣告式工作。

package ejb.demo;
import javax.ejb.*; import java.rmi.Remote; import java.rmi.RemoteException; import java.util.*;

public interface DemoHome extends EJBHome {
    public Demo create() throws CreateException, RemoteException;
}

步驟 4:撰寫 Enterprise JavaBean 類別 (Bean 實作)

實作應用程式邏輯 (商業邏輯)。大部分代碼由 EJB 規格隱含實現,僅需實作介面方法與商業方法。未來工具/模板將自動完成大部分工作。

package ejb.demo;
import javax.ejb.*; import java.io.Serializable; import java.util.*; import java.rmi.*;

public class DemoBean implements SessionBean {
    static final boolean verbose = true;
    private transient SessionContext ctx;
    private transient Properties props;

    // SessionBean 介面方法
    public void ejbActivate() { if (verbose) System.out.println("ejbActivate called"); }
    public void ejbRemove() { if (verbose) System.out.println("ejbRemove called"); }
    public void ejbPassivate() { if (verbose) System.out.println("ejbPassivate called"); }
    public void setSessionContext(SessionContext ctx) {
        if (verbose) System.out.println("setSessionContext called");
        this.ctx = ctx; props = ctx.getEnvironment();
    }
    public void ejbCreate() { if (verbose) System.out.println("ejbCreate called"); }

    // **** 商業邏輯 ****
    // 唯一自行撰寫的代碼,其餘皆為宣告或介面方法實作
    public String demoSelect() throws RemoteException {
        return("hello world");
    }
}

關鍵觀察:demoSelect() 是唯一發明的代碼,其餘皆為規格規定的樣板代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved