UML软件工程组织

灵活使用EJB的本地和远程接口(二)
作者:Sheldon Wosnick;Viktor Stepan 来 源: 赛迪网
在 Application Developer 中设置项目

步骤 1. 创建数据模型和持久性存储

用于 Dual 应用程序的数据模型与 “Hello World”J2EE 应用程序中的是一样的。先进入 DB2,再创建名为 dualDB 的数据库,然后在数据库中创建表 PERSON:

CREATE TABLE PERSON
(
  ID        INTEGER NOT NULL PRIMARY KEY,
  FIRSTNAME VARCHAR(40),
  LASTNAME  VARCHAR(40)
)


在下载的 ZIP 文件的 Table.ddl 中提供了此脚本。

步骤 2. 创建项目

在这一步中,我们将创建一组项目,其中的每个项目都将用于不同的目的。例如我们将把实体 Bean 和会话 Bean 放在不同的 JAR 中,之所以这样做是因为较大的 J2EE 应用程序常常是由若干 JAR 或项目组成的。请一个接一个地创建以下项目:

a.Java 项目:DualJavaModule00。在此项目中,创建包 dual.value。我们将把 VO 的类 Person 放入其中。

b.J2EE 1.3 项目:DualEARForAllInOne。此项目将是 All-in-One 拓扑的占位符。

c.J2EE 1.3 项目:DualEARForEJBContainer。此项目只准备用作 EJB 容器。

4.J2EE 1.3 项目:DualEARForWeb。此项目只准备用作 Servlet 容器。此外,我们还可以使用 DualEARForAllInOne 来达到相同的目的,因为它们惟一的不同之处在于项目依赖性。然而,最好保持它们分离。

5.EJB 2.0 项目:DualEJBModule01。与 DualEARForEJBContainer 相关联。创建包 dual.ejb(在 ejbModule 文件夹中)。

6.EJB 2.0 项目:DualEJBModule02。与 DualEARForEJBContainer 相关联。同样地,创建包 dual.ejb。使此项目依赖于 DualEJBModule01。(稍后将对依赖性作进一步的介绍。)

7.Web 项目:DualWebModule03。在创建此项目时,请选中 Advanced options 复选框,使其与 DualEARForWeb 相关。在此 Web 项目内创建一个包 dual.servlet。不选定所有的 WebProject features,因为此练习不需要它们。

在完成了初始项目结构之后,工作台中的 J2EE 视图应该看起来如图 3 所示。



图 3. 具有项目的工作台


在 Project Navigator 视图中,您可以看到所有已创建的项目。

步骤 3. 创建项目内容

a.在 DualJavaModule00 项目中,创建名为 dual.value.Person 的 Java Bean。您可以从下载的内容中复制此 Bean。通过右击项目名并选择 Refresh 来刷新项目。

b.在 DualEJBModule01 中,创建具有具有容器管理的持久性(Container Managed Persistence,CMP)的实体 Bean。将其命名为 DualEntity(图 4),具有类型 int 的键字段 id 和 firstName 和 lastName 作为持久性 String 字段。选中本地和远程客户端视图,如图 5 所示。我们将使用 Remote Home Interface 的名称 dual.ejb.DualEntityRemoteHome 和远程接口的名称 dual.ejb.DualEntityRemote,因而需要更改缺省名。EJB 绑定名将为ejb/dual/ejb/DualEntityHome。



图 4. DualEntity EJB




图 5. CMP 字段和命名约定


另一种方法是,将源代码从下载的文件复制到项目文件夹中,刷新项目,然后如上创建实体 Bean,用该代码作为膜板(图 5)。这还将创建 ejb-jar.xml 和绑定描述符。在此之后,您还可以将 ejb-jar.xml 从下载的文件复制到项目中。

c.在 DualEJBModule02 中,创建无状态会话 Bean(称为 DualSession)。另外,您还可以复制源代码的内容,刷新项目,然后用该代码作为膜板创建 DualSession 会话 Bean。与上面类似,我们将需要本地和远程接口,Remote Home Interface 的名称为 dual.ejb.DualSessionRemoteHome,远程接口的名称为 dual.ejb.DualSessionRemote。(检查为命名约定提供的源代码。)从下载的文件中复制 ejb-jar.xml。稍后我们将进行代码分析。在分析完成之后,您将得到许多错误消息。现在忽略它们;在下一步确定项目依赖性时将解决这些错误。

d.在 DualWebModule03 中,创建名为 DualServlet 的 Servlet。此外,完成这项任务还有一种更快速的方法,就是从下载的文件中复制源代码 DualServlet.java。您也可以将 web.xml、index.html 和 result.jsp 复制到项目文件夹中。另外,您会得到许多错误消息,但是现在我们将通过确定项目依赖性来解决这些错误。

步骤 4. 确定项目依赖性和 EJB 到 RDB 映射

a.通过调整项目特性中的 Java Build Path 来使 DualEJBModule02 项目依赖于 DualJavaModule00 和 DualEJBModule01 项目。在选择 OK 按钮之后,此项目的错误应该消失。

b.同样地,使 DualWebModule03 依赖于 DualEJBModule02 和 DualJavaModule00,采取的方式是再次调整项目特性中的 Java Build Path,在 Web Library Projects 设置中压需要进行做同样的调整。此后,您就不应该有错误消息。

c.要将 DualEntity Bean 映射到关系数据库(RDB)表 PERSON,可以选择 DualEJBModule01,再右击并选择 Generate... => EJB to RDB Mapping ...,然后使用如下选项:

·创建一个新的后端文件夹。

·对于 EJB/RDB 映射,使用“Meet In The Middle”选项。

·要建立数据库连接,可以选择 DB name, userID, password, DB2 Universal Database 8.1,然后接受剩余选项的所有缺省值。

·选择 PERSON 表供导入。

·选择 Match By Name and Type 选项。

·首先选择 Bean,再选择表,然后右击并选择 Match by Type。



图 6. EJB 到 RDB 映射


d.为 DualEJBModule01 和 DualEJBModule02 选择 Generate... => Deployment and RMIC Code...。

版权所有:UML软件工程组织