J2EE编程起步(3) |
作者:佚名 发布时间:2005-04-02 来源:不详
|
客户端程序ConverterC 括以下步骤:
|
lient是一个独立运行的Java应
|
用,创建ConverterClient主要包
|
ConverterClient.java
|
源码展示了EJB客户端最基本的
|
任务实现,即:
|
ConverterHome接口定 create方法之前ConverterH
|
义了EJB声明周期方法如create ome对象必须被实例化,包括三
|
,在中ConverterClient 可以调用 个步骤:
|
Context initial = new InitialCon
|
text();
|
2. 查找与JNDI命名MyConverter绑定的对象 |
java.lang.Object objref = initia
|
l.lookup("MyConverter");
|
3. 限定指向ConverterHome对象的参考 |
(ConverterHome) Port
|
ableRemoteObject.narrow(objr
|
ef,
|
客户端通过调用本地接口ConvertHom create 方法返回组件Converter类型的对 业方法可以被客户端调用。当客户端调用 后调用ConverterEJB.ejbCreate 方法。
|
e对象的create方法创建ConverterEJB类对象, 象。然后,远程方法定义的在ConverterEJB实现的商 create 方法时,EJB容器将实例化ConverterEJB,然
|
Converter currencyCo
|
nverter = home.create();
|
完成上述任务后,调用 将相应的调用运行在J2EE服 dollarToYen的代码如下:
|
商业方法就比较简单了。你调用 务器中的ConverterEJB 例的方
|
Converter对象的方法, EJB容器 法。客户端调用商业方法
|
double amount = curr
|
encyConverter.dollarToYen(10
|
0.00);
|
下面是ConverterClient.java的完整源码: |
import javax.naming.Context; |
import javax.naming.InitialContext; |
import javax.rmi.PortableRemoteObject; |
public class ConverterClient { |
public static void main(String[]
|
args) {
|
Context initial = new InitialCon
|
text();
|
Object objref = init
|
ial.lookup("MyConverter");
|
(ConverterHome)Porta
|
bleRemoteObject.narrow(objre
|
f,
|
Converter currencyConverter = ho
|
me.create();
|
double amount = curr
|
encyConverter.dollarToYen(10
|
0.00);
|
System.out.println(S
|
tring.valueOf(amount));
|
amount = currencyConverter.yenTo
|
Euro(100.00);
|
System.out.println(S
|
tring.valueOf(amount));
|
currencyConverter.remove(); |
System.err.println("Caught an un
|
expected exception!");
|
1. 在下面脚本compile
|
Client.sh, 对根据J2EE实际安
|
装目录作相应改动。
|
CPATH=.:$J2EE_HOME/lib/j2ee.jar |
javac -classpath "$C
|
PATH" ConverterClient.java
|
2. 运行脚本文件compileClient.sh |
1. 在下面批处理文件compileClient
|
.bat中,对根据实际J2EE安装目录进行修改。
|
set CPATH=.;%J2EE_HOME%libj2ee.jar |
javac -classpath %CP
|
ATH% ConverterClient.java
|
2. 运行批处理文件compileClient.bat |
运行客户端你需要ConverterAppClie 实例通信所需的存根类,ConverterAppCl
|
nt.jar文件,该文件包含允许客户端与EJB容器中EJB ient.jar 文件在部署J2EE应用过程中创建。
|
1. 在下面脚本testClient.sh, 对根
|
据J2EE实际安装目录作相应改动。
|
CPATH=$J2EE_HOME/lib
|
/j2ee.jar:ConverterAppClient
|
.jar:.
|
java -classpath "$CP
|
ATH" ConverterClient
|
1. 在下面批处理文件testClient.ba
|
t中,对根据实际J2EE安装目录进行修改。
|
set CPATH=.;%J2EE_HOME%libj2ee
|
.jar;ConverterAppClient.jar
|
java -classpath "%CP
|
ATH%" ConverterClient
|
2. 运行批处理文件 testClient.bat |
当运行ConverterClient 时发现下面错误: |
1. java.lang.ClassCastException |
可能无法找到ConverterAppClient.jar文件。 |
2. java.lang.NoClass
|
DefFoundError: ConverterClie
|
nt
|
无法定位ConverterClient.class 文件。 |
3. java.lang.NoClass
|
DefFoundError: javax/naming/
|
Context
|
无法找到所需的j2ee.jar 文件,确认CLASSPATH设置。 |
4. javax.naming.Name
|
NotFoundException: Lookup of
|
name MyConverter failed.
|
J2EE服务器无法定位JNDI名字MyConverter所绑定的组件。 |
5. javax.naming.Nami to ORB at . . . .
|
ngException: Error accessing
|
repository: Cannot connect
|
| |
|
|
|
|