J2EE編程起步(二)

來源:互聯網
上載者:User
建立J2EE應用

你不能夠直接將企業組件(EJB)部署到J2EE伺服器,必須將組件加到一個J2EE 應用中然後再部署。在本節,你將建立一個叫做ConverterApp的新J2EE應用並儲存為ConverterApp.ear。

1. 在命令列提示符下啟動J2EE伺服器:

j2ee ?verbose
(停止伺服器命令 j2ee -stop.)

2. 在另一個終端視窗運行部署工具:

deploytool
(按F1擷取部署工具協助)

3. 建立新的J2EE應用

a. 在部署工具中選擇[檔案] 功能表
b. 從[檔案] 功能表中選擇“新應用”
c. 點擊瀏覽
d. 在檔案選擇框中定位存放.ear檔案的目錄
e. 檔案命名為ConverterApp.ear.
f. 點擊“新應用”
g. 點擊“確定”

企業組件(EJB)打包

本部分你將運行部署工具的建立EJB嚮導來完成下述任務:

·建立組件部署描述符
·將描述符和組件類打包為.jar檔案
·將EJB.jar檔案打包到J2EE應用ConverterApp.ear 檔案

從[檔案] 功能表中選擇建立EJB來開始建立新的EJB,這個嚮導將顯示下面的對話方塊:

介紹對話方塊:

a. 閱讀嚮導特性說明文檔
b. 點擊“下一步”

EJB JAR 對話方塊:

a. 在標有"Enterprise Bean will go in," 的組合框中選擇ConverterApp.
b.在JAR Display Name域輸入ConverterJAR,聲明EJB .jar檔案包含該組件,該名字會在樹形應用結構中呈現。
c. 點擊增加內容文本域
d. 在內容編輯對話方塊頂部,輸入包含.class檔案的目錄
e. 選擇該目錄下相關.class加入:Converter.class, ConverterEJB.class, 和ConverterHome.class.
f. 點擊確定
g. 點擊下一步

綜合對話方塊:

a. 在組件類型中選擇“會話”
b. 選擇“無狀態”
b. 在EJB類組合框中選擇ConverterEJB.
c. 在本地介面組合框中選擇ConverterHome.
d. 在遠程介面組合框中選擇Converter.
e. 在企業組件命名域中輸入ConverterBean.
f. 點擊下一步

環境入口對話方塊:

因為你可以跳過後面的對話方塊,所以可以點擊完成結束建立EJB應用任務。

部署J2EE應用

現在J2EE應用中已經包含企業組件(EJB)了,可以對其進行部署。

1.指定企業組件的JNDI名字
a. 在應用部署波農工具中,在應用樹形結構中選擇ConverterApp
b. 選擇JNDI名字標籤
c. 在JNDI 名字域中,輸入MyConverter並確認。 用戶端將使用該名字來定位本地介面。

2.部署J2EE應用
a. 從工具菜單中選擇“部署”
b. 在第一個對話方塊中選擇ConverterApp為部署對象,Localhost為目標伺服器
c. 選擇標有"Return Client Jar." 的選擇框
d. 在文本域中敲入ConverterAppClient.jar的確切目錄,如J2EE的例子目錄doc/guides/ejb/examples/converter
e. 點擊下一步
f. 在第二個對話方塊中,核實ConverterBean 的JNDI命名為MyConverter.
g.點擊下一步
h. 在第三個對話方塊中點擊結束
i. 在部署進程對話方塊中,點擊OK完成部署

開發用戶端

用戶端程式ConverterClient是一個獨立啟動並執行Java應用,建立ConverterClient主要包括以下步驟:

1. 用戶端編碼
2. 用戶端編譯

用戶端編碼

ConverterClient.java 源碼展示了EJB用戶端最基本的任務實現,即:

·定位本地介面
·建立企業組件(EJB)
·調用商業方法

定位本地介面

ConverterHome介面定義了EJB聲明周期方法如create,在中ConverterClient 可以調用create方法之前ConverterHome對象必須被執行個體化,包括三個步驟:

1. 建立JNDI命名內容
Context initial = new InitialContext();

2. 尋找與JNDI命名MyConverter綁定的對象
java.lang.Object objref = initial.lookup("MyConverter");

3. 限定指向ConverterHome對象的參考
ConverterHome home =
(ConverterHome) PortableRemoteObject.narrow(objref,
ConverterHome.class);

建立企業組件(EJB)執行個體

用戶端通過調用本地介面ConvertHome對象的create方法建立ConverterEJB類對象, create 方法返回組件Converter類型的對象。然後,遠程方法定義的在ConverterEJB實現的商業方法可以被用戶端調用。當用戶端調用create 方法時,EJB容器將執行個體化ConverterEJB,然後調用ConverterEJB.ejbCreate 方法。

Converter currencyConverter = home.create();

調用商業方法

完成上述任務後,調用商業方法就比較簡單了。你調用Converter對象的方法, EJB容器將相應的調用運行在J2EE伺服器中的ConverterEJB 執行個體的方法。用戶端調用商業方法dollarToYen的代碼如下:

double amount = currencyConverter.dollarToYen(100.00);

ConverterClient源碼

下面是ConverterClient.java的完整源碼:


import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import Converter; import ConverterHome; public class ConverterClient { public static void main(String[] args) { try { Context initial = new InitialContext(); Object objref = initial.lookup("MyConverter"); ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objref, ConverterHome.class); Converter currencyConverter = home.create(); double amount = currencyConverter.dollarToYen(100.00); System.out.println(String.valueOf(amount)); amount = currencyConverter.yenToEuro(100.00); System.out.println(String.valueOf(amount)); currencyConverter.remove(); } catch (Exception ex) { System.err.println("Caught an unexpected exception!"); ex.printStackTrace(); } } }

編譯用戶端代碼

UNIX:

1. 在下面指令碼compileClient.sh, 對 根據J2EE實際安裝目錄作相應改動。

#!/bin/sh
J2EE_HOME=
CPATH=.:$J2EE_HOME/lib/j2ee.jar

javac -classpath "$CPATH" ConverterClient.java

2. 運行指令檔compileClient.sh

Windows:

1. 在下面批次檔compileClient.bat中,對根據實際J2EE安裝目錄進行修改。

set J2EE_HOME=
set CPATH=.;%J2EE_HOME%/lib/j2ee.jar

javac -classpath %CPATH% ConverterClient.java

2. 運行批次檔compileClient.bat

運行用戶端

運行用戶端你需要ConverterAppClient.jar檔案,該檔案包含允許用戶端與EJB容器中EJB執行個體通訊所需的存根類, ConverterAppClient.jar 檔案在部署J2EE應用過程中建立。

UNIX:

1. 在下面指令碼testClient.sh, 對 根據J2EE實際安裝目錄作相應改動。

#!/bin/sh
J2EE_HOME=
CPATH=$J2EE_HOME/lib/j2ee.jar:ConverterAppClient.jar:.
java -classpath "$CPATH" ConverterClient

2. 運行指令檔testClient.sh

Windows:

1. 在下面批次檔testClient.bat中,對根據實際J2EE安裝目錄進行修改。

set J2EE_HOME=
set CPATH=.;%J2EE_HOME%/lib/j2ee.jar;ConverterAppClient.jar
java -classpath "%CPATH%" ConverterClient

2. 運行批次檔 testClient.bat

常見問題處理

當運行ConverterClient 時發現下面錯誤:

1. java.lang.ClassCastException
可能無法找到ConverterAppClient.jar檔案。

2. java.lang.NoClassDefFoundError: ConverterClient
無法定位ConverterClient.class 檔案。

3. java.lang.NoClassDefFoundError: javax/naming/Context
無法找到所需的j2ee.jar 檔案,確認CLASSPATH設定。

4. javax.naming.NameNotFoundException: Lookup of name MyConverter failed.
J2EE伺服器無法定位JNDI名字MyConverter所綁定的組件。

5. javax.naming.NamingException: Error accessing repository: Cannot connect to ORB at . . . .
J2EE伺服器沒有運行。 作者Blog:http://blog.csdn.net/zaowei21/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.