灵活使用EJB的本地和远程接口(二)
2008-01-05 10:25:59 来源:WEB开发网核心提示:在 application Developer 中设置项目步骤 1. 创建数据模型和持久性存储用于 Dual 应用程序的数据模型与 “Hello World”J2EE 应用程序中的是一样的,先进入 DB2,灵活使用EJB的本地和远程接口(二),再创建名为 dualDB 的数据库,然后在数据库中创建表 PERSON: C
在 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 所示。
在 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。
另一种方法是,将源代码从下载的文件复制到项目文件夹中,刷新项目,然后如上创建实体 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。
d.为 DualEJBModule01 和 DualEJBModule02 选择 Generate... => Deployment and RMIC Code...。
更多精彩
赞助商链接