IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

用 WebSphere Studio Application Developer 开发并测试一个完整的“Hello World”J2EE 应用程序

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Sheldon Wosnick (swosnick@ca.ibm.com), IBM WebSphere Studio Application Developer 的软件开发者, IBM 多伦多实验室

2001 年 12 月 01 日

这篇文章的目的是为您展示 WebSphere Studio Application Developer 测试版中的工具是如何无缝地集成编写 J2EE 应用程序代码和单元测试 J2EE 应用程序所需步骤,以此提高程序员的效率和满意度.

©2001 International Business Machines Corporation. All rights reserved.

介绍

在这份教程里,我将用 WebSphere® Studio Application Developer 测试版来开发、测试、运行并调试一个完整的 J2EE 应用程序,该应用程序包括实体 EJB、会话 EJB、一个 servlet、一个JSP™ 页和一个 HTML 主页。我将广泛地关注 EJB 的开发。整个应用程序将只使用 Application Developer 中的工具和在“现有的”可直接利用的运行时间。

为了严格遵循开发者的惯例,这个 J2EE 应用程序将会是一个“Hello World”应用程序,该应用程序里所有的组件都将被命名为 HelloWorld。那么,举个例子,您创建和部署的实体 bean 将被命名为 HelloWorldEntity,会话 bean 将被命名为 HelloWorldSession,servlet 被命名为 HelloWorldServlet,等等。这使我们能全神贯注于主要的思想而不至于太拘泥于细节,也使代码简单。( 下载源代码和清单) 我也为那些愿意用已创建的应用程序完成这份教程的人在下载中提供已创建的应用程序。下载的 ZIP 文件包含完整的 EAR 模块和我已提供的用来创建 InstantDB 数据库表的一些有用的脚本。用现成的包括创建数据库表脚本的版本,您可以简单地导入 EAR 模块,创建表,创建并配置服务器工程、实例和配置并且运行、调试和测试应用程序。然而,我希望您能从零开始创建所有的东西,从而对开发环境和不同部分的无缝集成有更好的认识。

而后,我的目的就是突出 ApplicationDeveloper 工具。这篇文章的目的不是教您如何创建 J2EE 应用程序。我确信你们中很多人都是这方面的能手,而是为您展示工具如何紧密集成代码必需的全部步骤和 J2EE 应用程序,从而提高程序员的工作效率和满意程度。

正如我所提及的,在这篇文章的 提供HelloWorldApplicationDeveloper.zip 下载文件中,您将在一个 EAR 文件中找到应用程序所有的源文件、教程提到的列表还有数据库脚本和属性文件。





回页首


开始创建源文件

在“Hello World”端到端、多层的、分布式的 J2EE 应用程序中,我会证明通过创建和使用下面所有的 J2EE 源文件生成一个典型的分布式的 J2EE 应用程序是可能的,且其架构为典型的客户机(表示层)、应用程序和数据存储三层模型。

  • J2EE 应用程序(EAR 模块)
  • J2EE Web 应用程序(WAR 模块)
  • J2EE EJB 模块
  • 无状态会话 EJB
  • 容器管理实体 EJB(CMP)
  • 数据源(映射到 InstantDB)
  • J2EE 应用程序客户模块
  • Java™ bean(用于 servlet 和 JSP 中)
  • servlet
  • JSP 页
  • HTML 页

这份教程的编写和测试是相对于我的特定的 Application Developer 安装目录。所有的路径将用此安装目录 e:\WSAD_BETA 来讨论。

因为很可能您的 Application Developer 安装跟目录路径的与我的不同,尤其如果您接受了缺省的 c:\Program Files\IBM\WebSphere Studio Application Developer 路径,那么您将需要修改这些路径和在指定路径中创建的所有的源文件。





回页首


“Hello World”的体系结构

该应用程序的体系结构利用了所谓的 J2EE“Model 2”体系结构(经典的 MVC 的一个版本,模型-视图-控制器体系结构),在该体系结构中 servlet 被用做控制器,JSP用于显示最后的输出。在这个示例中,一个会话 bean 被用于控制工作流和与客户机(恰好是 servlet)直接交互,并且依次与实体 bean 交互,实体 bean 更进一步与支持它的数据存储交互。那么,这个简单的分布式“HelloWorld”J2EE 应用程序,可当您仔细分析时还是比较复杂的。我将向您展示在 WebSphere Studio Application Developer 中开发和测试该应用程序是何等容易。





回页首


完成教程

请正确遵循下面的步骤和过程来构建和测试“Hello World”J2EE 应用程序。如果您计划从头创建应用程序,请遵循这个过程。已创建的版本(在 EAR 模块格式中)可从下载中得到,且只需把它象导入其他的 EAR 模块一样导入到 Application Developer 中。我的期望是当我说,“要创建实体 bean 吗?”时,您就知道我在谈论什么。如果不是这种情形,请查阅一下 Application Developer 的帮助文档以获得关于如何使用 Application Developer 工具的详细资料。

当您看完这份教程,您就会拥有许多不同类型的工程和源文件,每一种表示一个不同的 J2EE 源文件,例如 Web 模块和 EJB 模块。当您完成时,完整的、端到端应用程序的“J2EE 视图”看起来应该象下图 1 所示。。


图 1. 完成的端到端应用程序“Hello World”的 J2EE 视图
完成的“Hello World”端到端应用程序的 J2EE 视图




回页首


开发步骤

第 1 步.创建 EJB 工程和 HelloWorldEntity 容器管理实体 bean(CMP)

  1. 创建一个新的命名为 HelloWorldEJBProject的 EJB 工程和一个新的名为 HelloWorldEARProject的 EAR 工程。单击 Finish,接受所有其它缺省值。

  2. 选择 HelloWorldEJBProject工程。在名为 helloworld.ejb的软件包中,创建新的名为 HelloWorldEntity的 CMP bean,同持久字段一起列在下面。除了 id 字段必须设为关键字段外,要确保为每一个字段选择 Access with getter and setter methods复选框和 Promot getter and setter methods复选框。提供缺省值。
    firstName (String)
    lastName (String)
    id (int, Key Field)
                

  3. 一旦加入了全部三个字段,单击 Finish按钮。

第 2 步.用 InstantDB 为 HelloWorldEntity CMP 创建 EJB 到 RDB 的映射

  1. 对于 InstantDB v3.26 作为目标数据库,选择 HelloWorldEJBProject工程并执行缺省的自顶向下的EJB 到 RDB 映射。您应当指定下列各项:

    Target Database:InstantDB v3.26
    Database Name:HelloWorld
    Schema Name:<remove NULLID and leave blank>

    注意您必须使模式名为空。InstantDB 不支持模式,因此在 schemaName.table 样式名的存留器中生成的 SQL 将会抛出 SQLException 而失败。
    图 2.为 InstantDB 创建 EJB 到 RDB 映射
    为 InstantDB 创建 EJB 到 RDB 映射
  2. 确认 Generate DDL复选框被选中,然后单击 Finish。完成后,生成的 table.dll 看起来应该类似于这样:
    - Generated by Relational Schema Center 
    on Thu Sep 1 09:22:47 EDT 2001
    CREATE TABLE HELLOWORLDENTITY
    (FIRSTNAME VARCHAR(250), 
       LASTNAME VARCHAR(250),
       ID INT NOT NULL);
    ALTER TABLE HELLOWORLDENTITY
       ADD PRIMARY KEY (ID);
                

    稍后,我们将用这个 DDL 创建一个 InstantDB SQL 脚本来构建数据库表。

第 3 步.创建一个 HelloWorldSession 无状态会话 bean

  1. 选择 HelloWorldEJBProject工程并在 helloworld.ejb包中创建一个新的名为 HelloWorldSession的无状态会话 bean。接受全部缺省值,并单击 Finish

  2. 在 HelloWorldSession bean 的 HelloWorldSessionBean.java 打开编辑器。添加一个名为 helloWorldEntityHelloWorldEntity类型的 protected 成员,并把它赋为 null(空值)。
    protected HelloWorldEntity helloWorldEntity = null;
                

    现在,添加代码使会话 bean 能管理工作流并能与实体 bean 的远程接口交互。Web 浏览器客户机将决不会直接与实体 bean 交互,更不会与它的远程接口交互。客户机将只与会话 bean 交互。使用会话 bean 来控制工作流是实现 J2EE 应用程序的典型方法。要重申的是:我不是在暗示“Hello World”的代码和实现是典型的或者是最好的方法;我只不过使用该代码来证明工具集成是多么好。

  3. 在 HelloWorldSessionBean 类中创建 getHelloWorldEntity() 方法,但不要将它提取到远程接口中,因为没有必要将其暴露给客户机。这个方法在该类内部并且是可以被隐藏的。
    Protected HelloWorldEntity getHelloWorldEntity(int id) { 
         ... 
         return helloWorldEntity; 
    }
                

    请参阅在下载 ZIP 文件中的 清单 1以获得该方法的完整实现。

  4. 把下面的导入语句添加到 HelloWorldSessionBean.java 中:
    import javax.ejb.*; 
    import javax.naming.*;
                

  5. 为 bean 把下面的远程方法添加到 HelloWorldSession 接口来和 HelloWorldEntity 实体 bean(并将其升级到远程接口,在测试版版本中这需要手动完成)对话:
    public String getFirstName(int id)
      throws java.rmi.RemoteException {
         ... 
    } 
    public void setFirstName(int id, String firstName)
      throws java.rmi.RemoteException {
         ... 
    } 
    public String getLastName(int id)
      throws java.rmi.RemoteException { 
         ...
    } 
    public void setLastName(int id, String lastName)
      throws java.rmi.RemoteException { 
         ... 
    }
                

    请参阅在下载 ZIP 文件中 清单 2获得这四个方法的实现。

第 4 步.生成 WebSphere 部署的代码

通过选择 HelloWorldEJBProject工程为 HelloWorldSession 和 HelloWorldEntity bean 生成部署的代码并运行 RMIC,然后从弹出菜单选择 Generate for enterprise bean(s) =>Deploy code and RMIC Stub and Tie code

第 5 步.创建一个服务器工程

  1. 创建一个名为 HelloWorldServerProject的新的服务器工程。

  2. 使用您刚刚创建的服务器工程,创建一个新的组合的 Server Instance and Configuration。将服务器名设置成 HelloWorldServer,并用 WebSphere v4.0 Unit Test Environment服务器实例类型。如果需要与缺省值 8080 不同的 HTTP 端口,到下一页并改变该值。否则,单击 Finish

  3. 在 Server perspective 中,使用 Server Configuration 视图来把工程 HelloWorldEARProject添加到 HelloWorldServer 配置。
    图 3.服务器配置视图
    服务器配置视图

第 6 步.创建数据源

完成下面的步骤来创建配置数据源,并用它为上面已创建和映射的HelloWorldEntity CMP bean 存留数据。

  1. 在服务器配置视图中的 Server Perspective,使用配置编辑器编辑 HelloWorldServer 的配置。请参考 Application Developer 服务器工具 文档,得到更多关于如何做到这一点的信息。单击编辑器中的 Datasource选项卡,在 JDBC 驱动程序列表中选择 idbJdbcDriver,然后单击 Add按钮来添加一个新的数据源。注意:您应该使用数据源窗格中的 Add按钮这样做。即,在这个示例中,您不需要添加一个新的 JDBC 驱动程序。对您来说 DB2® 和 InstantDB JDBC 驱动程序都是可用的。

  2. 在 Add a Datasource 对话框中指定下面的值(确切地):

    Name:HelloWorldDatasource
    JNDI Name:jdbc/idb/HelloWorldDatasource
    Description:HelloWorld Datasource
    Category:helloworld-testing
    Database Name:<leave blank>
    图 4. 添加数据源
    添加数据源
  3. 不用改变已有的缺省值,且不填 Database name 字段。缺省的 timeout 和 pool 的大小适用于基本的测试。同样,既然您不需要数据库中的事务,就 不要Enable JTA复选框。完成后,单击 OK。然后,按工具栏的 Save图标或者输入 Ctrl-S来保存配置。

    名字、种类、说明和 JNDI name 字段可以设置成您希望的任何值,并且不需要遵循特别的格式。但是,为安全起见,为完成这教程,我推荐您象我描述的那样输入。最重要的是:JNDI name 和您稍后会在把 CMP 绑定到数据源的 EJB 绑定中用到的名字相同。为了简化,我简单整理了稍后会在绑定中用到的 jdbc/idb/HelloWorld

    图 5.一个定义的数据源
    一个定义的数据源
  4. 因为 JDBC URL 是作为单独的特定供应商资源属性(例如不象 DB2,但象 Oracle)来处理的,所以您需要为这个数据源定义一个新的资源属性。选择您刚创建的数据源,然后在资源属性窗格中,单击 Add按钮来添加一个新的资源属性。按下面所示设置值:

    Name:url
    Type:java.lang.String
    Value:jdbc:idb:e:\WSAD_BETA/HelloWorld.prp
    Description:JDBC url resource for HelloWorld

  5. 当您完成对话框后,单击 OK按钮。请参阅下面图 6.
    图 6.为 InstantDB 添加资源属性
    为 InstantDB 添加资源属性
  6. 记住这里描述的所有路径都是相对于我特定的 Application Developer 安装路径 e:\WSAD_BETA ,我选择在那里构建我的实际表。一旦您定义了这个属性,就再次保存配置。您应该查看添加的资源属性。

第 7 步.创建 InstantDB HelloWorld 数据库表

首先,获得上面创建的 table.ddl 并用它来生成存留 CMP 的实际表。您需要创建一个 InstantDB 脚本来实现这一点。然后,创建一个 InstantDB 属性文件,定义了怎样、在哪里创建表。最后,创建一个简单的批处理文件来按照所指定那样创建表。

  1. 使用 Application Developer 缺省的文本编辑器,在 Application Developer 安装目录创建一个名为 HelloWorld.prp的 InstantDB 属性文件。至少,要象您看到的下载 ZIP 文件的 清单 3那样建立。这样会发信号通知 InstantDB 在当前目录下创建表。如果您想或者需要在别的地方创建表,请在此文件设置路径。

  2. 使用 table.dll 作为输入,创建一个新的 InstantDB SQL 脚本来指定要创建什么和使用什么样的 JDBC 驱动程序。您可以使用 Application Developer 缺省的文本编辑器,并把此文件在 Application Developer 安装目录中另存为文件 HelloWorld.idb。请参阅下载 ZIP 文件的 清单 4得到这个文件的内容。

  3. 可选的,您可以创建一个简单的方便的批处理文件来调用、创建表,该批处理文件称作 HelloWorld.bat很恰当,它在功能上象下载 ZIP 的 清单 5中的实现。

  4. 当从命令行运行 HelloWorld.bat 时,您应当看到下面的显示表被成功创建的输出。如上所定义的,表应该被创建在当前目录下的名为: HelloWorld子目录中。
    Enhydra InstantDB - Version 3.26
    The Initial Developer of the Original Code
      is Lutris Technologies Inc.
    Portions created by Lutris are Copyright (C)
      1997-2001 Lutris Technologies, Inc.
    All Rights Reserved.
    Connected to jdbc:idb:HelloWorld.prp
    Driver InstantDB JDBC Driver
    Version Version 3.26
    Database HelloWorld is shutting down...
    Database HelloWorld shutdown complete.
                

第 8 步.把数据源绑定到 HelloWorldEntity CMP

作为创建并把数据源绑定到我们特定的 CMP 的最后一步,我们需要用 EJB Extention 编辑器编辑 EJB 绑定。

  1. 定位在 HelloWorldEJBProject 工程中 ejbModule 文件夹的 META-INF 文件夹中的文件 ejb-jar.xml 。用 EJB Extension 编辑器(不是缺省的 ejb-jar.xml 编辑器)在文件上单击右键执行“Open with”。

  2. 选择 Binding选项卡,然后选择 HelloWorldEntitybean 来配置绑定。基于如何创建和配置上述的数据源和为数据源本身使用的 JNDI name,为绑定输入 JNDI name:

    JNDI name:helloworld/HelloWorld
    Datasource JNDI name:jdbc/idb/HelloWorldDatasource
    Default user id:hello <optional>
    Default password:hello <optional>

  3. 当您完成后,输入 Ctrl-S或者单击工具栏上的 Save图标来保存配置。
    图 7.将数据源绑定到 CMP EJB
    将数据源绑定到 CMP EJB




回页首


第一轮单元测试:EJB Test Client

因为您事实上已经为创建、开发、部署和配置做了许多工作,所以我建议在继续下面的实现 servlet、JSP 和关联代码的步骤之前,进行一些单元测试。这就是我相信(有偏见的,当然,您自己判断吧) Application Developer 工具有真正出色并能为您提供无缝的、集成的、强大的单元测试能力。由于服务器上 已经缺省构建了 EJB Test Client ,且可在应用服务器上运行,所以首先使用 EJB Test Client 来确定您的 EJB 至少是有功能的并且持久性机制相对 InstantDB 工作正确。

  1. 在 HelloWorldEJBProject 工程的 ejbModule 中的 HelloWorldSession bean 处单击右键,并从弹出菜单选择 Run on Server

    这是我认为绝妙的服务器工具 的众多“自动”功能之一。它可以为您配置选择的模块(EJB 或者 Web 应用程序组件)恰当的做“正确事情”,为选择的模块类型初始化并启动应用程序服务器。在 EJB 的一个示例中,安装基于 Web 的 EJB Test Client,在嵌入式 Web 浏览器的 bean 执行 EJB Test Client,在命名服务查找,找到 home 并使它对您是可用的。您可以用一个简单的菜单命令 Run on Server做到这一点。现在这是自动完成!
    图 8.运行 EJB Test Client Run on Server 命令
    运行 EJB Test Client Run on Server 命令
  2. 检查 Server Perspective 的控制台确保 bean 正确启动。如果没有看到异常或者载入模块错误,就可以假定它是成功的。如果不是这样,则可能是生成的代码或者数据源配置出问题了。一旦成功启动,状态将会变成 Started
    图 9.检查服务器状态:服务器启动了
    检查服务器状态:服务器启动了
  3. 如果服务器正常启动,基于 Web 的、集成的 EJB Test Client 会自动打开来创建 HelloWorldSession实例。在这个应用程序中这样做将会创建一个 HelloWorldEntity 实例。确保在控制台没有显示存留器代码未能生成或者数据源不能被正确绑定的消息。

  4. 验证调用 Session bean 中与 Entity bean 同名的方法,来执行 Entity bean 。这样就允许两个 bean 相互通讯并把数据存留到配置好的数据源。
    图 10.EJB Test Client 测试 HelloWorldSession bean
    EJB Test Client 测试 HelloWorldSession bean




回页首


第二轮单元测试:J2EE 应用程序客户机

如果您成功测完了 EJB Test Client,您现在可能想使用基于标准的 J2EE 应用程序客户机 来测试 bean,基于标准的 J2EE Application Client 是 J2EE 应用程序模块的一部分。这意味着总体上它是应用程序的内置部分并是 EAR 模块的一部分。

第 9 步. 创建一个Java 应用程序客户机工程和实现

  1. 使用现有的 HelloWorldEARProject EAR 创建一个新的名为 HelloWorldApplicationClientProject的 Application Client 工程。

  2. 在 AppClientModule 文件夹,用在 helloworld.ejb.clients包的一个主要方法 HelloWorldEJBTestClient 创建一个新的 J2EE 应用程序客户机类。

  3. 请参阅下载 ZIP 文件的 清单 6获得 HelloWorldEJBTestClient 的完整实现。
    package helloworld.ejb.clients; 
    import javax.naming.*; 
    Import java.util.*; 
    Import javax.rmi.*; 
    Import helloworld.ejb.*;
    public class HelloWorldEJBTestClient { 
         public static void main(String[] args) { 
         ... 
    }
                

    您应当注意的一件事是:因为这是用 EAR 模块封装的、与 J2EE 兼容的应用程序客户机,所以没有必要使用特定网络 JNDI InitialContext。您没必要指定服务供应者来连接到 J2EE 服务器;这说明 J2EE 应用程序客户机是位置透明的。位置透明的实际能力是“Hello World”应用程序客户机组件不需知道它要连接并与之工作的 EJB 的确切位置。

  4. 为工程,在 Libraries 选项卡下的属性对话框把外部 j2ee.jar 文件添加到 Java Build Path。这个文件可以在您的 WSAD_HOME\plugins\com.ibm.etools.webphere.runtime\runtime 目录找到。

  5. 把 HelloWorldEJBProject 工程添加到 Java Build Path 来解决编译时对 EJB 自身的引用。

  6. 如果 WebSphere Application Server 还没启动,可在 Server Configuration 面板中启动它。一直等到它完全启动没有异常。如果已经从上面完成的步骤启动,那就没必要重新启动。

  7. 使用 Java Launcher(不是 Server Launcher)运行自定义的 HelloWorldEJBTestClient 类。做到这一点的最容易的方法是从 Server Perspective 开始。首先,选择 Menu => Perspective => Customize => expandOther tree => check Run\Debug,这样会把“奔跑着的人”和调试图标添加到当前(Server)perspective 工具栏。然后,选择 HelloWorldEJBTestClient 类并单击奔跑着的人图标。使用 Java launcher 运行这个程序。您将切换到 DebugPerspective 方法,那里可以处理过程并看到控制台输出。如果您愿意,可以简单地从 Debug Perspective 启动客户机。

  8. 您应当获取无异常的完全运行,将会在应用程序运行完后在控制台窗口看到以下列各项:
    Getting the IntialContext...
    Performing the lookup..
    Parameters passed to the commandline:
    Parameter 'id' = 99 
    Parameter 'firstName' = Sheldon 
    Parameter 'lastName' = Wosnick
    Calling Session bean methods..
    Verifying method calls happened...
    First Name Returned: Sheldon
    Last Name Returned: Wosnick
                

    如果对您来说不是这样,那么就返回并彻底跟踪各步来查看可能在哪里出错了。如果应用程序成功运行,您现在已经确保您的核心应用程序逻辑能在不同(附合开放标准,公有的)的客户机配置中正确运转。




回页首


第三轮单元测试:完整的端到端 J2EE 应用程序

既然您已经使用运行在应用程序服务器自身的 EJB Test Client 开发并测试了 EJB,您可能想再做一轮通过运行在应用程序服务器外部的应用程序客户机更进一步地测试了它们。您可以创建一个 servlet、JSP、Java bean 和 HTML 主页以便能穿越各层端到端地运行 J2EE 应用程序,就如我在上面图 1 所示的。这样,会使您拥有可靠的入口程序,如您所愿,让用户方便使用应用程序的核心逻辑。

第 10 步. 创建 Web 工程和一个简单的 Java bean 来读写属性

这里用到的是典型的内容表示与内容生成的分离的体系结构,既用 servlet 和 JSP 来实现。

  1. 使用现有的 EAR HelloWorldEARProject 创建一个新的名为 HelloWorldWebProject的 Web 工程。接受缺省值并单击 Finish

  2. 然后,在资源树结构中的 Web 工程目录下的名为 helloworld.servlet的包中创建一个简单的 Java bean。以便您写的 servlet 可以将值传送给 JSP 。编译时,实际的二进制(文件)将被移到 webApplication 文件夹的 WEB-INF\classes 位置。请参阅下载 ZIP 文件的 列表 7来获得 HelloWorldJavaBean 的完整实现。

第 11 步.创建 HelloWorldServlet servlet

  1. helloworld.servlet包中,使用 Web 工具创建一个名为 HelloWorldServlet的简单的 servlet,只执行 doPost() 方法 stub 部分。然后,执行必需的代码来与 HelloWorldSession bean 通信。接受所有其他的缺省值。

    servlet 不是万能的,它不是实现 JNDI 查找的默认方法,(典型地是用 init() 方法中实现)。因为我们将引用上面创建的 HelloWorldJavaBean,所以请确定您已经如第 10 步所述那样创建了它。

  2. 最后,您应当为要执行的 servlet 和 doPost() 方法编写代码。参考在下载 ZIP 文件中的 列表 8。这个 servlet 就是应用程序的客户端,由于它是 Web 模块的一部分,所以它不需要指定服务提供者和特定网络 JNDI 初始上下文,原因是 servlet 是 Web 模块的一部分。Web 模块是包含 EJB 的 EAR 模块的一部分。

  3. 为了解决 HelloWorldWebProject 工程对 HelloWorld EJB 的类引用,要把 HelloWorldEJBProject 工程添加到 Java Build Path。

    值得注意的是如果您选择导入已创建的 HelloWorld.ear 文件,您也必需添加EJB 工程到所有的工程的 Java Build Path 中,这些工程包含了对该EJB的引用和 j2ee.jar (用于javax.ejb.* 的 jar 文件)的路径。

第 12 步.创建 HTML 主页

使用 Web 工具,添加一个简单的主页 index.html,充当表单来传递参数并将它们发送到 servlet。既然 HTML 不被认为是“源代码”,那么将它添加到 webApplication 文件夹,该文件夹是工作文档的根目录。在这里不需特殊的样式表,所以一个也不要指定。然后,使用设计或者源视图,为 ID numberFirst NameLast Name字段创建三个文本字段和一个提交动作来执行 POST。参考下载 ZIP 文件的 清单 9获得这样一页的示例。

第 13 步.为给用户的最终显示创建 JSP

使用 Web 工具创建一个名为 HelloWorldJSP.jsp的不指定样式表的 JSP 页。象您创建 HTML 页那样完成相同的步骤。JSP 看起来应该象下载 ZIP 文件中的 清单 10所提供的那个 JSP 那样简单。

第 14 步.在服务器运行全部应用程序

到目前为止,您已经构造了所有的完整的、端到端的 J2EE 应用程序的不同部分并能从头至尾用一种简单、易懂的方式测试它。

  1. 选择 index.html文件并用 Run on Server命令运行在服务器上创建的 index.html 表单。就象我早先所描述的,该命令将恰好正确的来为您自动处理、运行特定组件。在这个示例中,如果服务器已经在运行,您必需首先让它停止并重新启动它来把新 Web 应用程序(WAR 模块)添加到企业应用程序(EAR 模块)从而改变配置。
    图 11.服务器运行应用程序
    运行服务器的应用程序
  2. 在登记字段输入一些数据并提交。这将会把操作直接传递到 servlet 控制器,传到会话 bean 再传到实体 bean. Bean 存留在数据存储,然后将操作传回 servlet,servlet 将在 Java bean 中设值,将 bean 嵌入到会话,并把全部请求和响应分派给为给用户显示的 JSP。要耐心,因为您第一次提交请求,JSP 需要先生成再编译,这将花几秒钟。随后的提交将几乎是实时的。
    图 12. 一个简单的 HTML 格式的登记、提交表单
    一个简单的 HTML 格式的登记、提交表单
  3. 一旦全部的应用程序已经经由上面图 1 中所有的分布式层运行了自己的过程,最后的输出是由显示 JSP 生成的并返回给浏览器的 HTML。




回页首


结论

我希望通过这篇文章,您已经学会如何只用 WebSphere Studio Application Developer 测试版提供的工具来开发、测试、运行和调试一个完整的、端到端的、分布式的多层应用程序。用 Application Developer 成套工具,您可以将精力全部集中到核心的业务逻辑,不必做很多设置和配置来创建和测试大量的、集成 J2EE 源文件。

注意:下面[已附]代码是示例代码不是 IBM 公司创建的。这个示例代码不是任何标准的 IBM 产品的一部分,在这里提供给您的目的仅仅是为了帮助您开发应用程序。“仅此状态”提供代码,不提供任何形式的担保。IBM 将不会为您使用此示例代码出现的任何损害负责,即使已被告知可能会有这方面的损害。



关于作者

Sheldon Wosnick

Sheldon Wosnick是 WebSphere Studio Application Developer(属于 IBM 多伦多实验室的 服务器工具 小组)的一个软件开发者。跟他的小组成员一起,他目前负责整个 服务器工具 运行时间集成和本文所演示的单元测试环境。以前,他是 VisualAge® for Java WebSphere Tools 小组的一员。有时被亲切认为是“运行时人”,他设计并集成 WebSphere Test Environment 和 Apache Tomcat Test Environment for VisualAge for Java,VisualAge for Java 中两个非常流行的功能部件。您可以通过 swosnick@ca.ibm.com联系 Sheldon。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款