top
Loading...
代碼人生學習品之EJB入門篇(三)
br>在上一講,我們將EJB通過Application Deployment Tool發布進了J2EE服務器中去。我想大家十分想使用一個客戶端的程序來調用它。好,我們這一講就來講講客戶端程序的編 寫。

首先,我們先理一下思路。如果要使用服務器上的EJB哪么首先我們要得到一個Home接口,而這個接口需要你通過JNDI來得到,哪么JNDI是通過什么來找Home接口呢?哪就是我們在上一講中所提到的在Application Deploying Tools里最后一步定義的JNDI name。再來理一下,首先,我們通過JNDI name利用JNDI來得到一個Home接口。再通過這個Home接口中的creat方法來得到一個Bean的實例化對象。以下為這段程序的代碼:

我們新建一EJBClient的工程,在這個工程中我們加入一ConverterClient.java文件,同時在工程中加入J2EE的lib引用,并且更增加一個lib,這個lib指向我們在上一講中使用Application Deployment Tool生成的ConverterAppClient.jar文件。這里包括了EJB在客戶端所使用的庫文件。以下是ConverterClient.java文件代碼:

ConverterClient.java

/**

* Title: EJB Client Test Project$#@60;p$#@62;

* Description: $#@60;p$#@62;

* Copyright: Copyright (c) HD$#@60;p$#@62;

* Company: China Code$#@60;p$#@62;

* @author HD

* @version 1.0

*/

package ejbclient;



import javax.naming.Context;

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

//引用了EJB及EJB在Home的接口

import ejbtest.Converter;

import ejbtest.ConverterHome;



public class ConverterClient {



public static void main(String[] args) {

try {

//創建一個JNDI naming contest

Context initial = new InitialContext();

//從JNDI中以MyConverter名子來定位到對象(我們在發布時指定了這里能定位的JNDI的名稱)

Object objref = initial.lookup("MyConverter");

//通過objref得到ConverterHome本地接口

ConverterHome home =

(ConverterHome)PortableRemoteObject.narrow(objref,

ConverterHome.class);

//再由Home接口的create方法來創建一個服務器上的EJB實例

Converter currencyConverter = home.create();

//調用EJB中的方法

double amount = currencyConverter.dollarToYen(100.00);

System.out.println(String.valueOf(amount));

amount = currencyConverter.yenToEuro(100.00);

System.out.println(String.valueOf(amount));



} catch (Exception ex) {

System.err.println("Caught an unexpected exception!");

ex.printStackTrace();

}

}

}

把這個java文件加入到在第一講中我們建立的工程文件中去,讓Jbuilder make工程一次。這樣就會得到ConverterClient.class文件。在運行前我們要設置一下Jbuilder的工程,在Project-Project Properties…的Project Properties對話框中的Run Tab中設置Application的Main Class為ConverterClient。

如果你得到java.lang.ClassCastException的意外。哪么你需要確定是否在Project的lib中加入了對ConverterAppClient.jar包的引用。另外你一定要確認你在工程中使用的JNDI name是否與你在程序中使用的名稱一樣。通常出現問題就在這點了。

好,這里讓你運行起來了第一個EJB的程序。實際上很簡單,不是嗎?我們會在下一講中來講講EJB實施的原理。我在大多數的教程中都看到的是將理論放在最開始的地方,而我覺得先運行起一個實例更有利于大家的學習,更能有效的對EJB有一個深入的認識。我們在下一講中來依照我們剛完成的實例理解一下EJB的部屬和使用。



相關資源:

有關本文章相關問題可以到news://news.chinacode.net 新聞組的CCU.Program.Java.EJB組中去討論。同時你也可以在哪里找到本文章最新的版本。


轉自 www.chinacode.net 中國代碼聯盟新聞組
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗