J2EE编程起步.docx

上传人:b****3 文档编号:3893895 上传时间:2022-11-26 格式:DOCX 页数:8 大小:19.20KB
下载 相关 举报
J2EE编程起步.docx_第1页
第1页 / 共8页
J2EE编程起步.docx_第2页
第2页 / 共8页
J2EE编程起步.docx_第3页
第3页 / 共8页
J2EE编程起步.docx_第4页
第4页 / 共8页
J2EE编程起步.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

J2EE编程起步.docx

《J2EE编程起步.docx》由会员分享,可在线阅读,更多相关《J2EE编程起步.docx(8页珍藏版)》请在冰豆网上搜索。

J2EE编程起步.docx

J2EE编程起步

J2EE编程起步

作者:

胡德平    来自:

JavaUnion

【编按】为了帮助国内J2EE初学者,将J2EE部分文档进行编译,期望能够对广大Java爱好者有所帮助。

如有需要对发布在JavaUnion.org论坛中文章发表或转载需求,请与作者联系。

本文将通过简单例子,描述如何利用EJB开发、部署和运行一个客户机/服务器应用。

例子的客户端作为Java独立应用运行,由ConverterClient.java类实现。

它实现一个简单的实时会话,主要通过客户端应用调用服务器端EJB类ConverterEJB.java来实现。

如果你已经安装了J2EE,则可以在doc/guides/ejb/examples/converter目录中找到这些例子。

为了实现本文所描述的简单例子,你需要完成以下任务:

·编写和编译EJB程序

·创建J2EE应用

·打包EJB(.jar)

·部署J2EE应用

·编写和编译客户端程序

·运行客户端

下面章节我们将就上述工作任务以及所涉及的知识点进行简单阐述。

前提

实现本文提供例子的前提是您安装了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;

importjava.rmi.RemoteException;

importjavax.ejb.CreateException;

importjavax.ejb.EJBHome;

publicinterfaceConverterHomeextendsEJBHome{

Convertercreate()throwsRemoteException,CreateException;

}

企业组件类(EJB)编码

本文中的企业组件(EJB)是一个无状态会话组件,命名为ConverterEJB.java,该组件实现了两个商业方法:

dollarToYen和yenToEuro,与远程接口Converter所定义客户端可访问方法一致,该类编码如下:

importjava.rmi.RemoteException;

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{

Contextinitial=newInitialContext();

Objectobjref=initial.lookup("MyConverter");

ConverterHomehome=(ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);

ConvertercurrencyConverter=home.create();

doubleamount=currencyConverter.dollarToYen(100.00);

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

amount=currencyConverter.yenToEuro(100.00);

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

currencyConverter.remove();

}catch(Exceptionex){

System.err.println("Caughtanunexpectedexception!

");

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安装目录进行修改。

setJ2EE_HOME=

setCPATH=.;%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安装目录进行修改。

setJ2EE_HOME=

setCPATH=.;%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:

LookupofnameMyConverterfailed.

J2EE服务器无法定位JNDI名字MyConverter所绑定的组件。

5.javax.naming.NamingException:

Erroraccessingrepository:

CannotconnecttoORBat....

J2EE服务器没有运行。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1