J2EE编程起步Word文档格式.docx
《J2EE编程起步Word文档格式.docx》由会员分享,可在线阅读,更多相关《J2EE编程起步Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
![J2EE编程起步Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/26/78ee31ee-1eaa-4d1c-8360-ad3b8d054453/78ee31ee-1eaa-4d1c-8360-ad3b8d0544531.gif)
实现本文提供例子的前提是您安装了J或相关操作系统厂商网站下载的J2SESDK,以及安装了相应操作系统版本的J2EESDK(下载)并进行了正确配置。
关于J2SE和J2EE的安装、配置和其它进一步信息,请参阅产品相关文档。
EJB编码
每个EJB程序必须要求编写下述代码:
远程接口(Remoteinterface)
本地接口(Homeinterface)
实现组件(Enterprisebeanclass)
远程接口编码
远程接口定义了客户端能够调用的商业方法,这些商业方法是有服务器端的企业组件实现的,本文所涉及的Converter.java编码如下:
importjavax.ejb.EJBObject;
//引入必须的包
importjava.rmi.RemoteException;
publicinterfaceConverterextendsEJBObject{//必须继承EJBObject类
/*定义客户端可以调用的方法*/
publicdoubledollarToYen(doubledollars)throwsRemoteException;
publicdoubleyenToEuro(doubleyen)throwsRemoteException;
}
本地接口编码
本地接口定义了员徐客户端创建、查找或移动EJB的方法,本文所涉及的本地接口类ConverterHome接口只定义了一个create方法,返回远程接口类型,编码如下:
importjava.io.Serializable;
importjavax.ejb.CreateException;
importjavax.ejb.EJBHome;
publicinterfaceConverterHomeextendsEJBHome{
Convertercreate()throwsRemoteException,CreateException;
企业组件类(EJB)编码
本文中的企业组件(EJB)是一个无状态会话组件,命名为ConverterEJB.java,该组件实现了两个商业方法:
dollarToYen和yenToEuro,与远程接口Converter所定义客户端可访问方法一致,该类编码如下:
importjavax.ejb.SessionBean;
importjavax.ejb.SessionContext;
publicclassConverterEJBimplementsSessionBean{
publicdoubledollarToYen(doubledollars){
returndollars*121.6000;
publicdoubleyenToEuro(doubleyen){
returnyen*0.0077;
publicConverterEJB(){}
publicvoidejbCreate(){}
publicvoidejbRemove(){}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}
publicvoidsetSessionContext(SessionContextsc){}
编译EJB
现在需要对上述三个类进行编译,在UNIX平台和NT/9X平台上的编译略有区别,分别如下编译:
UNIX:
1.在下面的脚本compileEJB.sh中,将该成实际J2EE安装目录。
#!
/bin/sh
J2EE_HOME=
CPATH=.:
$J2EE_HOME/lib/j2ee.jar
javac-classpath"
$CPATH"
ConverterEJB.javaConverterHome.javaConverter.java
2.运行compileEJB.sh脚本
Windows:
1.在下面的compileEJB.bat批处理文件中,将该为实际J2EE安装目录。
setJ2EE_HOME=
setCPATH=.;
%J2EE_HOME%\lib\j2ee.jar
javac-classpath%CPATH%ConverterEJB.javaConverterHome.javaConverter.java
2.运行批处理文件compileEJB.bat。
创建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.点击“下一步”
EJBJAR对话框:
a.在标有"
EnterpriseBeanwillgoin,"
的组合框中选择ConverterApp.
b.在JARDisplayName域输入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.选择标有"
ReturnClientJar."
的选择框
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命名上下文
Contextinitial=newInitialContext();
2.查找与JNDI命名MyConverter绑定的对象
java.lang.Objectobjref=initial.lookup("
MyConverter"
);
3.限定指向ConverterHome对象的参考
ConverterHomehome=(ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);
创建企业组件(EJB)实例
客户端通过调用本地接口ConvertHome对象的create方法创建ConverterEJB类对象,create方法返回组件Converter类型的对象。
然后,远程方法定义的在ConverterEJB实现的商业方法可以被客户端调用。
当客户端调用create方法时,EJB容器将实例化ConverterEJB,然后调用ConverterEJB.ejbCreate方法。
ConvertercurrencyConverter=home.create();
调用商业方法
完成上述任务后,调用商业方法就比较简单了。
你调用Converter对象的方法,EJB容器将相应的调用运行在J2EE服务器中的ConverterEJB实例的方法。
客户端调用商业方法dollarToYen的代码如下:
doubleamount=currencyConverter.dollarToYen(100.00);
ConverterClient源码
下面是ConverterClient.java的完整源码:
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.rmi.PortableRemoteObject;
importConverter;
importConverterHome;
publicclassConverterClient{
publicstaticvoidmain(String[]args){
try{
Objectobjref=initial.lookup("
ConverterHomehome=(ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);
System.out.println(String.valuesOf(amount));
amount=currencyConverter.yenToEuro(100.00);
currencyConverter.remove();
}catch(Exceptionex){
System.err.println("
Caughtanunexpectedexception!
"
ex.printStackTrace();
}
编译客户端代码
1.在下面脚本compileClient.sh,对根据J2EE实际安装目录作相应改动。
J2EE_HOME=
ConverterClient.java
2.运行脚本文件compileClient.sh
1.在下面批处理文件compileClient.bat中,对根据实际J2EE安装目录进行修改。
javac-classpath%CPATH%ConverterClient.java
2.运行批处理文件compileClient.bat
运行客户端
运行客户端你需要ConverterAppClient.jar文件,该文件包含允许客户端与EJB容器中EJB实例通信所需的存根类,ConverterAppClient.jar文件在部署J2EE应用过程中创建。
1.在下面脚本testClient.sh,对根据J2EE实际安装目录作相应改动。
CPATH=$J2EE_HOME/lib/j2ee.jar:
ConverterAppClient.jar:
.
java-classpath"
ConverterClient
2.运行脚本文件testClient.sh
1.在下面批处理文件testClient.bat中,对根据实际J2EE安装目录进行修改。
%J2EE_HOME%\lib\j2ee.jar;
ConverterAppClient.jar
%CPATH%"
2.运行批处理文件testClient.bat
常见问题处理
当运行ConverterClient时发现下面错误:
1.java.lang.ClassCastException
可能无法找到ConverterAppClient.jar文件。
2.java.lang.NoClassDefFoundError:
无法定位ConverterClient.class文件。
3.java.lang.NoClassDefFoundError:
javax/naming/Context
无法找到所需的j2ee.jar文件,确认CLASSPATH设置。
4.javax.naming.NameNotFoundException:
LookupofnameMyConverterfailed.
J2EE服务器无法定位JNDI名字MyConverter所绑定的组件。
5.javax.naming.NamingException:
Erroraccessingrepository:
CannotconnecttoORBat....
J2EE服务器没有运行。