您的位置:首页 > 编程语言 > Java开发

使用NetBeans IDE 5.5创建应用程序客户端

2007-06-15 10:12 501 查看
本教程向您介绍如何编写和部署用于访问 Enterprise JavaBean (EJB) 的简单应用程序,以及如何访问建构在 Java EE 5 平台 (EJB 3.0) 和 J2EE 1.4 平台 (EJB 2.x) 上的 EJB。
使用 NetBeans IDE 5.5, 您可以创建作为独立项目类型的应用程序客户端。您还可以创建作为企业应用程序的一部分或独立应用程序的应用程序客户端项目。本文使用 NetBeans IDE 5.5 Release
预计持续时间:30分钟

教程练习

l 创建作为企业应用程序的一部分的应用程序客户端
l 使用独立应用程序客户端访问 EJB
m 访问一个远程接口
m 访问两个或多个远程接口
l 使用独立应用程序客户端访问EJB(EJB 2.1)

入门

前提条件

本教程假定您已经具有了以下技术的一些基本知识或编程经验:
l Java 编程
l NetBeans IDE

教程所需的软件

本教程需要在计算机上安装以下软件:
l NetBeans IDE 5.5下载)。
l Java Standard Development Kit (JDK) version 5.0 或version 6.0 (下载)
l Sun Java System Application Server, Platform Edition 9.0(下载)
本教程需要使用IDE注册Sun Java System Application Server的本地实例。

创建作为企业应用程序一部分的应用程序客户端

首先,我们创建一个名为EnterpriseAppEE5的Java EE 5企业应用程序。在我们创建企业应用程序的同时,还将创建应用程序客户端。

创建企业应用程序

从主菜单中选择File - New Project。

从Enterprise category中选择Enterprise Application然后单击Next。

键入EnterpriseAppEE5作为项目并设置Sun Java System Application Server的服务器。

将Java EE Version设置为Java EE 5,然后选择Create EJB Module和Create Application Client Module(可任选一个)。您可以取消选中Create Web Application Module,因为本教程不需要网络模板。

单击Finish。

在企业应用程序中创建会话Bean

现在我们在EJB模块中创建SessionBean EJB bean。要创建该SessionBean,需执行以下操作:

右键单击Project窗口中的EnterpriseAppEE5-ejb EJB模板,然后选择New > File/Folder打开New File向导。

从Enterprise category中选择Session Bean,然后单击Next。

键入SessionBean作为EJB名称,键入ejb作为包。

选择Stateless作为Session Type,然后选择Remote作为创建接口的类型。(您可以取消选中本地接口,因为本教程只使用远程接口。)单击Finish。

当单击Finish时,bean类SessionBean.java在Source Editor中打开。

在Source Editor中单击右键,选择EJB Methods > Add Business Method生成bean的一个业务方法。

在Add Business Method对话框中,键入getResult作为名称,将Return Type设置为String,然后选择远程和本地接口框。单击OK。

在SessionBean.java中,将getResult方法修改为:

public String getResult() {

return "This is EJB 3.0 Bean";

}


保存更改。

从应用程序客户端中调用会话Bean

现在我们将代码添加到用于调用EJB bean的应用程序客户端中。要修改应用程序客户端,需执行以下操作:

在Projects窗口中展开EnterpriseAppEE5-app-client > Source Packages > enterpriseappee5,然后双击Main.java打开Source Editor中的文件。

在Source Editor中右键单击,然后选择Enterprise Resources >Call Enterprise Bean。

在Call Enterprise Bean对话框中,选择SessionBean作为要调用的bean并选择Remote 作为Referenced Interface。单击OK。
当您单击OK时,以下注释被添加到Main.java中以调用会话bean:

@EJB

private static SessionRemote sessionBean;


利用以下代码修改main方法,生成一些简单输出。我们将使用System.err.println,以便能轻松的在Output窗口中查看消息。

System.err.println("result=" + sessionBean.getResult());


保存更改。

配置企业应用程序

现在几乎所有事情都已经完成了,我们需要做的最后一件事就是设置作为模块的应用程序客户端,它应该在您运行企业应用程序时运行。要配置企业应用程序,需执行以下操作:

右键单击Projects窗口中的EnterpriseAppEE5企业应用程序项目节点,并选择Properties。

在Project Properties对话框中选择Run。

选择EnterpriseAppEE5-app-client作为Client Module URI(默认情况下应该选择它)。单击OK。

运行企业应用程序

现在我们可以运行企业应用程序测试应用程序客户端。
1. 右键单击Projects窗口中的EnterpriseAppEE5,然后选择Run。
当您运行项目时,IDE构建并部署应用程序。以下消息出现在Output窗口中:
result = This is EJB 3.0 Bean

使用独立应用程序客户端访问EJB

在本练习中,我们创建一个EJB模块项目,然后创建与EJB连接的应用程序客户端项目。
我们不能使用EJB注释将EJB链接到应用程序客户端中,因此我们将使用上下文查找。如果您拥有一个以上的远程接口, bean查找代码是不同的,那么我们将本练习分为两部分:
l 访问一个远程接口

l 访问两个或多个远程接口

访问一个远程接口

在本练习中,我们创建一个具有远程接口的EJB模块,然后创建访问EJB的应用程序客户端。

创建EJB模块

在本练习中,我们创建名为EJBModule30的EJB模块。

从主菜单中选择File > New Project。

从Enterprise category中选择EJB Module,然后单击Next。

键入EJBModule30作为项目名称,并设置Sun Java System Application Server的服务器。

将Java EE Version设置到Java EE 5中。

单击Finish。

在EJB模块中创建会话Bean

在本练习中,我们将在EJB模块中创建Bean30 EJB。要创建Bean30,需执行以下操作:

右键单击Project窗口中的EJB模块,然后选择New > File/Folder打开New File向导。

从Enterprise category中选择Session Bean,然后单击Next。

键入Bean30作为EJB名称,键入ejb作为包,保持Session Type为Stateless不变,然后勾选Remote创建远程接口。单击Finish。

当单击Finish时,bean类Bean30Bean.java在Source Editor中打开。

在Source Editor中右键单击源代码,从弹出窗口中选择EJB Methods > Add Business Method,生成bean的一个业务方法。在Add Business Method对话框中,键入getResult作为方法名称,将Return Type设置为String,确保勾选了Remote接口框,然后单击OK。

在Bean30Bean.java中,修改getResult方法的返回内容,以便其他组件可访问该方法:

public String getResult() {

return "This is EJB 3.0 Bean";

}


修改@Stateless会话bean注释,以更换用于映射bean的默认名称。我们想要更改从Bean30Bean到Bean30的映射名称。然后我们将使用Bean30查看应用程序客户端的bean。现在注释应该看起来如下所示(更改黑体部分):

@Stateless(mappedName="Bean30")

public class Bean30Bean implements Bean30Remote {


保存更改。

创建应用程序客户端项目

现在我们创建将访问EJB的应用程序客户端ApplicationClientForTest。

从主菜单中选择File > New Project。

从Enterprise category中选择Enterprise Application Client,后单击Next。

键入ApplicationClientForTest作为项目名称,并设置Sun Java System Application Server的服务器。

将Java EE Version设置到Java EE 5中。

单击Finish。

从应用程序客户端中调用EJB

现在我们将EJBModule30项目添加到作为库的ApplicationClientForTest中,并添加访问Bean30的代码。

右键单击Projects窗口中的ApplicationClientForTest项目节点,并选择Properties。

在Project Properties对话框中,选择Libraries类,然后单击Add Project。

找到并选择EJBModule30项目,单击Add Project JAR Files,然后单击OK。

单击OK即可将EJBModule30的JAR文件添加到ApplicationClientForTest库中。通过在Projects窗口中展开项目的Libraries节点,您可以看到项目库。

双击Projects窗口中的Main.java打开Source Editor中的文件。

在Source Editor中,将以下代码添加到Main.java的main方法中。我们将再次使用System.err.println,以便轻松看到Output窗口中的消息。

InitialContext ctx = new InitialContext();

Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30");

System.err.println("EJB message is:" + br.getResult());


修改导入语句(Alt-Shift-F)。

修改代码中的错误。您可以使用IDE中的建议功能帮助您。

注:在这种情况下,错误是由遗漏的throws子句引起的。为了使用IDE的建议功能,在包含错误的代码第一行中插入光标,在其下画红线强调。当“建议灯泡”图标在左侧出现时,单击灯泡并选择 “Add throws clause...” 将throws子句添加到方法中。IDE在将throws子句添加到方法中后,添加适当的import语句。

8. 保存更改。
现在万事俱备,可以将EJBModule30和ApplicationClientForTest部署到服务器中了,请右键单击Projects窗口中每个项目的项目节点,并选择Deploy Project。部署完两个项目之后,右键单击Projects窗口中的ApplicationClientForTest,并选择Run Project运行应用程序客户端。在Output窗口中,我们应该看到如下所示消息:
EJB message is: This is EJB 3.0 Bean

如果使用防火墙,您可能需要禁用防火墙,以允许应用程序客户端访问EJB。

访问两个或多个远程接口

在本练习中,我们在EJBModule30中创建第二个远程接口。然后我们修改应用程序客户端中的代码,以便它可以访问每个接口。我们在本练习中用来调用EJB的代码与调用一个远程接口时所用代码略有不同。本练习帮助您学习如何处理从一个独立应用客户端访问两个或多个远程接口时的情况。

为Bean30 EJB创建第二个远程接口

在本练习中,我们为Bean30 EJB创建名为Bean30Remote2的第二个远程接口。
要创建第二个接口,需执行以下操作:

右键单击Projects窗口中的EJB模块并选择New > Java class。

键入Bean30Remote2作为类名称,键入ejb作为包,然后单击Finish。

当单击Finish时,bean类Bean30Remote2.java在Source Editor中打开。

将@Remote注释添加到类中,声明作为远程接口的类。

修改接口定义,并通过以下更改(粗体部分)添加getResult方法:

@Remote

public interface Bean30Remote2 {

String getResult2();

}

5. 修改import语句。您将需要导入javax.ejb.Remote。

保存更改。

修改Bean30 Bean实现接口

在本练习中,我们修改Bean30以实现接口Bean30Remote2。

在Bean30Bean.java中,实现Bean30Remote2.java中的getResult2方法。该方法应该看起来如下所示:

public String getResult2() {

return "This is EJB 3.0 Bean 2";

}


修改类定义以实现Bean30Remote2。

该类现在应该看起来如下所示:

目录结构如下所示:

修改ApplicationClientForTest

接下来,我们修改应用程序客户端Main类中的查找代码。

双击Projects窗口中的Main.java类的ApplicationClientForTest,以打开Source Editor中的类。

修改main方法中的代码以查找第二个接口。在这种情况下,当有一个以上的远程接口时,我们必须使用全称查找每个接口。

InitialContext ctx = new InitialContext();

Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30#ejb.Bean30Remote");

System.err.println("EJB 3.0 result:" + br.getResult());

Bean30Remote2 br2 = (Bean30Remote2) ctx.lookup("Bean30#ejb.Bean30Remote2");

System.err.println("EJB 3.0 result 2:" + br2.getResult2());


修改import语句,为ejb.Bean30Remote2添加一个import语句。

保存更改。

现在重新部署EJBModule30,并运行应用程序客户端。在Output窗口中,您将看到以下输出:
EJB 3.0 result: This is EJB 3.0 Bean
EJB 3.0 result: This is EJB 3.0 Bean 2

总结

在本练习中,我们为您介绍了如何使用应用程序客户端访问EJB 3.0 Enterprise JavaBeans,以及如何从企业应用程序中的应用程序和独立应用程序客户端访问EJB。此外,我们还示范了调用具有一个远程接口bean和具有一个以上远程接口bean的区别。

使用独立应用程序客户端访问EJB(EJB 2.1)

如果您想使用EJB 2.X beans工作,流程非常相似,但不完全相同。在本练习中,我们将为您介绍访问EJB 2.x beans与访问EJB 3.0 beans有何不同。

创建EJB模块EJBModule14

首先,我们创建EJB模块。

从主菜单中选择File> New Project。

从Enterprise category中选择EJB Module,然后单击Next。

键入EJBModule14作为项目名称,并设置Sun Java System Application Server的服务器。

将Java EE Version设置到J2EE 1.4中。

单击Finish。

在EJBModule14中创建会话Bean

现在我们在EJB模块中创建Bean14 EJB bean。要创建Bean14,需执行以下操作:

右键单击Project窗口中的EJB模块,然后选择New > File/Folder打开New File向导。

从Enterprise category中选择Session Bean,然后单击 Next。

键入Bean14作为类名称,键入ejb作为包,保持Session Type为Stateless不变,然后勾选Remote创建远程接口。单击Finish。

当单击Finish时,bean类Bean14Bean.java在Source Editor中打开。

在Source Editor中右键单击源代码,从弹出菜单中选择EJB Methods > Add Business Method,打开Add Business Method对话框。

在Add Business Method对话框中,键入getResult作为业务方法名称,将Return Type设置为String,并选择Remote作为接口。单击OK。

修改Bean14Bean.java中的getResult方法,以使返回方法访问其他组件的bean:

public String getResult() {

return "This is EJB 1.4 Bean";

}


保存更改。

从应用程序客户端中调用EJB

现在我们将EJBModule14项目添加到ApplicationClientForTest中作为库,并添加访问Bean14的代码。

右键单击Projects窗口中的应用程序客户端项目,并选择Properties。

在Project Properties对话框中,选择Libraries类,然后单击Add Project。

找到并选择EJBModule14项目,单击Add Project JAR Files,然后单击OK。

单击OK时即可将EJBModule14的JAR文件添加到ApplicationClientForTest库中。通过在Projects窗口中展开项目的Libraries节点,您可以看到项目库。

双击Projects窗口中的Main.java打开Source Editor中的文件。

在Source Editor中,移除或注释掉用于访问EJBModule30的代码,并将以下代码添加到Main.java的main方法中。

Object remote = ctx.lookup("ejb/Bean14Bean");

Bean14RemoteHome sbrh = (Bean14RemoteHome) PortableRemoteObject.narrow(remote, Bean14RemoteHome.class);

Bean14Remote sbr = sbrh.create();

System.err.println("EJB 1.4 result:" + sbr.getResult());


修改import语句。

修改源代码中的错误。有错误是因为方法需要throws子句处理NamingException、CreateException和查找时的RemoteException。您可以使用IDE建议功能帮您处理错误。

现在万事俱备,可将EJBModule14和ApplicationClientForTest部署到服务器上(右键单击项目并选择Deploy Project和Run Project),然后运行客户端。当运行客户端时,我们应该在Output窗口中看到以下消息:
EJB 1.4 result: This is EJB 1.4 Bean

下一步

如需有关使用NetBeans IDE 5.5开发Java EE应用程序的更多信息,请参见以下资源:
l Java EE 5技术的介绍
l Java EE 5平台中的Java持久性
l Java EE 5平台与J2EE 1.4平台的比较
l Java EE应用程序的学习跟踪
本文英文地址:

http://www.netbeans.org/kb/articles/appclient-entappclient.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息