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

<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

本教程向您介绍如何编写和部署用于访问 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的本地实例。

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

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

创建企业应用程序

  1. 从主菜单中选择File - New Project

  2. Enterprise category中选择Enterprise Application然后单击Next

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

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

  5. 单击Finish

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

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

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

  2. Enterprise category中选择Session Bean然后单击Next

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

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

当单击Finish时,beanSessionBean.javaSource Editor中打开。

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

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

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

public String getResult() {

 return "This is EJB 3.0 Bean";

}

  1. 保存更改。

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

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

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

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

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

@EJB
private static SessionRemote sessionBean;

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

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

  1. 保存更改。

配置企业应用程序

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

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

  2. Project Properties对话框中选择Run

  3. 选择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模块

在本练习中,我们创建名为EJBModule30EJB模块。

  1. 从主菜单中选择File > New Project

  2. Enterprise category中选择EJB Module然后单击Next

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

  4. Java EE Version设置到Java EE 5中。

  5. 单击Finish

EJB模块中创建会话Bean

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

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

  2. Enterprise category中选择Session Bean然后单击Next

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

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

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

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

public String getResult() {

 return "This is EJB 3.0 Bean";

}

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

@Stateless(mappedName="Bean30")

public class Bean30Bean implements Bean30Remote {

  1. 保存更改。

创建应用程序客户端项目

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

  1. 从主菜单中选择File > New Project

  2. Enterprise category中选择Enterprise Application Client,后单击Next

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

  4. Java EE Version设置到Java EE 5中。

  5. 单击Finish

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

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

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

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

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

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

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

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

InitialContext ctx = new InitialContext();

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

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

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

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

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

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1027" style="WIDTH: 363.75pt; HEIGHT: 113.25pt" alt="image of using IDE suggestion feature to fix errors" type="#_x0000_t75"><imagedata o:href="http://www.netbeans.org/images/articles/appclient-throwsclause.png" src="file:///C:/DOCUME~1/fujiang/LOCALS~1/Temp/msohtml1/01/clip_image001.png"></imagedata></shape>

8. 保存更改。

现在万事俱备可以将EJBModule30ApplicationClientForTest部署到服务器中了,请右键单击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的第二个远程接口。

要创建第二个接口需执行以下操作

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

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

当单击Finish时,beanBean30Remote2.javaSource Editor中打开。

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

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

@Remote

public interface Bean30Remote2 {

 String getResult2();

 }

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

  1. 保存更改。

修改Bean30 Bean实现接口

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

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

public String getResult2() {

 return "This is EJB 3.0 Bean 2";

}

  1. 修改类定义以实现Bean30Remote2

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

<shape id="_x0000_i1025" style="WIDTH: 449.25pt; HEIGHT: 387.75pt" alt="Bean30Bean.java source" type="#_x0000_t75"><imagedata o:href="http://www.netbeans.org/images/articles/appclient-Bean30Bean.png" src="file:///C:/DOCUME~1/fujiang/LOCALS~1/Temp/msohtml1/01/clip_image003.png"></imagedata></shape>

目录结构如下所示:

<shape id="_x0000_i1026" style="WIDTH: 165pt; HEIGHT: 163.5pt" alt="Directory structure for EJB30Module" type="#_x0000_t75"><imagedata o:href="http://www.netbeans.org/images/articles/appclient-EJBModule30snapshot.png" src="file:///C:/DOCUME~1/fujiang/LOCALS~1/Temp/msohtml1/01/clip_image005.png"></imagedata></shape>

修改ApplicationClientForTest

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

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

  2. 修改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());

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

  2. 保存更改。

现在重新部署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的区别。

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

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

创建EJB模块EJBModule14

首先,我们创建EJB模块。

  1. 从主菜单中选择File> New Project

  2. Enterprise category中选择EJB Module然后单击Next

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

  4. Java EE Version设置到J2EE 1.4中。

  5. 单击Finish

EJBModule14中创建会话Bean

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

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

  2. Enterprise category中选择Session Bean然后单击 Next

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

当单击Finish时,beanBean14Bean.javaSource Editor中打开。

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

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

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

public String getResult() {

 return "This is EJB 1.4 Bean";

}

  1. 保存更改。

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

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

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

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

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

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

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

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

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());

  1. 修改import语句。

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

现在万事俱备可将EJBModule14ApplicationClientForTest部署到服务器上右键单击项目并选择Deploy ProjectRun 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




你可能感兴趣的:(Netbeans)