代碼人生學習品之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 中國代碼聯盟新聞組
首先,我們先理一下思路。如果要使用服務器上的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 中國代碼聯盟新聞組