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

建立你的第一個無狀態 Session Bean — HelloWorld 實戰教學 (第三部分:打包、部署、客戶端與執行)

     編輯:J2EE

步驟 5:建立 ejb-jar 檔案

EJB 巨大優勢在於可像 GUI 組件一樣可攜式打包分發伺服端邏輯。四項工作完成後產生 Demo.jar,準備配置安裝至 EJB 容器。

5.1 編譯 .java 檔案

javac ejb/Demo/demohome.java
javac ejb/Demo/demo.java
javac ejb/Demo/demobean.java

5.2 建立部署描述符

部署描述符讓部署者在安裝前客製化 Bean 屬性。範例為 SessionDescriptor 實例,以文字檔輸入 WebLogic 工具產生序列化實例 DemoBeanDD.ser。

# 指令
java weblogic.ejb.utils.DDCreator -dir ejb/demo DeploymentDescriptor.txt

# DeploymentDescriptor.txt 關鍵內容
(SessionDescriptor
  beanHomeName demo.DemoHome
  enterpriseBeanClassName ejb.demo.DemoBean
  homeInterfaceClassName ejb.demo.DemoHome
  remoteInterfaceClassName ejb.demo.Demo
  isReentrant false
  stateManagementType STATELESS_SESSION
  sessionTimeout 5
  (controlDescriptors (DEFAULT isolationLevel TRANSACTION_SERIALIZABLE transactionAttribute TX_REQUIRED runAsMode CLIENT_IDENTITY))
  (environmentProperties maxBeansInFreePool 100)
)

註:WebLogic 以分號 ; 為註解標記。

5.3 確認所有構件

  • Enterprise Bean 類別 + 相依類別
  • Remote 介面、Home 介面
  • 部署描述符、java.util.Properties 實例 (若需)
  • 清單檔 Manifest:識別 ejb-jar 內部署描述符
# manifest.txt
Name: ejb/demo/DemoBeanDD.ser
Enterprise-Bean: True

5.4 建立 ejb-jar (Demo.jar)

jar cvfm Demo.jar ejb/demo/manifest.txt ejb/demo/*.class ejb/demo/*.ser

# 驗證
jar tf Demo.jar
# 輸出應含:META-INF/MANIFEST.MF, ejb/demo/Demo.class, DemoBean.class, DemoHome.class, DemoBeanDD.ser

步驟 6:部署 DemoBean 至 BEA WebLogic/Tengah

6.1 產生實作類別 (Stub/Skeleton 等)

java weblogic.ejbc -d /export/weblogic/classes ejb/demo/DemoBeanDD.ser
# 產生:DemoBeanEOImpl.class, DemoBeanHomeImpl.class, Stub/Skeleton 類別

6.2 將 Demo.jar 放入 Classpath

最簡單:複製至 /export/weblogic/classes,編輯 startTengah.sh 加入 Classpath。

6.3 部署描述符放入位置

cd /export/weblogic/classes
jar xvf Demo.jar ejb/demo/DemoBeanDD.ser

6.4 編輯 weblogic.properties

weblogic.ejb.deploy=\
/export/weblogic/classes/ejb/demo/DemoBeanDD.ser

6.5 重啟 Tengah 伺服器

用工具或殺掉主進程後跑 startTengah.sh。

步驟 7:撰寫 EJB 客戶端程式

核心流程

  1. 建立 JNDI 初始上下文
  2. JNDI 查找 Home 介面
  3. Home 介面要求容器建立 Bean 實例
  4. Remote 介面呼叫 Bean 方法

不同容器/伺服器可能需不同版本客戶端代碼 (如 JNDI 初始化屬性不同)。

DemoClient.java 完整代碼

package ejb.demo;
import javax.ejb.*; import javax.naming.*; import java.rmi.*; import java.util.Properties;

public class demoClient {
    public static void main(String[] args) {
        System.out.println("\nBegin demoClient...\n");
        parseArgs(args);
        try {
            Context ctx = getInitialContext();
            DemoHome dhome = (DemoHome) ctx.lookup("demo.DemoHome");
            System.out.println("Creating Demo\n");
            Demo demo = dhome.create();
            System.out.println("The result is " + demo.demoSelect());
        } catch (Exception e) { e.printStackTrace(); }
        System.out.println("\nEnd demoClient...\n");
    }
    // parseArgs, getInitialContext (WebLogic: weblogic.jndi.T3InitialContextFactory, t3://localhost:7001)
}

步驟 8:編譯與執行客戶端

javac ejb/Demo/democlient.java
java ejb.Demo.democlient

預期輸出

Begin demoClient...
Creating Demo
The result is Hello World
End demoClient...

Hello World 來自 Bean 的 demoSelect() 方法。

小結

成功建立並執行 DemoBean 無狀態 Session Bean 完整範例,涵蓋編譯、打包、部署描述符、容器部署、客戶端開發與驗證全流程。

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