在第三篇文章中,Bhargav Perepa 介绍了三个重要主题:在 Rational Application Developer for WebSphere 中开发和测试一个 JPA 公开的 RESTFul 服务应用程序;使用该应用程序创建一个应用程序逻辑包,将它作为库在移动应用程序开发中使用的库;使用 Worklight Studio 开发和测试一个使用该库的服务器端移动应用程序组件。
通过阅读本文,您将学习如何使用 IBM® Rational® Application Developer for WebSphere®, Version 8.5.1 的开发人员工作台开发和测试一个 JPA 公开的 RESTful 服务应用程序。然后将学习如何开发和测试一个移动应用程序,该应用程序包含一个使用了前面的 RESTful 服务应用程序的服务器端适配器组件。IBM® Worklight 支持开发服务器端组件来调用封装在 Java、Web 服务、RESTful 服务和企业 JavaBeans (EJB) 组件中的业务逻辑。它是 IBM MobileFirst 移动企业应用程序开发平台的一部分(请参见 参考资料 部分,获取有关二者的更多信息的链接)。
用例架构
本文使用了第 1 部分中开发的相同用例。实体 Usecase 和 Usecases 是从 FIPSDB 的基础 USECASES 表、IBM® DB2® 数据库使用 Java 持久性 API (JPA) 中生成的。
用例实现包含 8 个不同的活动,它们大体可分为以下步骤:
使用 Rational Application Developer 开发一个 JPA 应用程序。 使用 Rational Application Developer 开发一个 JPA 测试客户端应用程序。 在 Rational Application Developer 中使用 JPA 测试客户端应用程序测试 JPA 服务器应用程序。 使用 RESTful 服务应用程序公开 JPA 服务器应用程序。 使用 Web 浏览器测试 JPA RESTful 服务应用程序。 使用 Worklight Studio 开发一个移动应用程序。 将提供的 JPA RESTful 服务应用程序逻辑作为一个 Java 归档文件库合并到移动应用程序中。 使用 Worklight Studio 测试移动应用程序,这也是一个完整场景的端到端测试。
使用 Rational Application Developer 开发一个 JPA 应用程序
以下步骤列出了使用 Rational Application Developer for WebSphere Version 8.5.1 执行 JPA 应用程序开发的过程。
启动 Rational Application Developer,指定文件系统上的工作区位置:
C:\temp\RADWS\Part3 如果用于 Java 应用程序开发的 Java Enterprise Edition (Java EE) 透视图尚未打开,请打开它 (Window > Open Perspective > Other > Java EE),然后单击 OK。 创建一个
新的 Java EE 项目: 选择 New Dynamic Web Project 创建向导:File > New > Dynamic Web Project。 输入项目名称:WLUsecasesJPAProject 为剩余选项保留默认设置。 单击 Next 两次。 在 Web Module 页面上,选中 Generate web.xml deployment descriptor 选项,然后单击 Finish。 如果看到提示,在看到选择 Yes 还是 No 的选项时指定 Yes,以关闭 Open Associated Perspective?
对话框窗口。
Java EE 透视图的 Package Explorer 现在显示了新创建的 Java EE 项目。
选择 JPA 项目方面: 选择 WLUsecasesJPAProject > Properties。 选择 Project Facets,然后选择 JPA。 单击 Further configuration
available。 从 Connection 下拉菜单中选择 FIPSDB。 选择 Annotated classes must be listed in persistence.xml 的单选按钮。 选择 Create mapping file (orm.xml)。 接受剩余选项的默认值。 对于 Modify Faceted Project,请单击 OK。 对于 Properties for WLUsecasesJPAProject,请单击 Apply。 选择 JAX-RS(RESTful Web 服务)项目方面: 选择 WLUsecasesJPAProject > Properties。 选择 Project Facets,然后选择 JAX-RS (Rest Web Services)。 接受所有其他选项的默认值。 对于 Modify Faceted Project,单击 OK。 对于 Properties for WLUsecasesJPAProject,单击 Apply。 对于 Properties for WLUsecasesJPAProject,单击 OK。 配置 JPA 数据库连接: 创建 FIPSDB 后端数据库并填入数据。请参见 下载 部分中提供的项目文件,获取数据定义和填充数据。 选择 Window > Open Perspective > JPA 打开 JPA 透视图。 选择 Data Source Explorer > FIPSDB (DB2 Alias) > Properties > Driver Properties > Test Connection (参见图 1)。
图 1. JPA 透视图,FIPSDB 数据库连接属性
选择 Data Source Explorer > FIPSDB (DB2 Alias) > Connect。 选择 Data Source Explorer > FIPSDB (DB2 for Linux, UNIX, and Windows V9.7) > FIPSDB > Schemas > DB2ADMIN > Tables > USECASES > Data > Return All Rows。
备注:
此选项应返回 9 行。 从表中生成 JPA 条目: 选择 WLUsecasesJPAProject > JPA Tools > Generate Entities from Tables。 选择 USECASES 表。 选择 Update class list in persistence.xml。 选择 Next,然后再次选择 Next。 在 Customize Default Entry Generation 页面上,指定包:
com.worklight.customcode.entities 单击 Next。 在 Customize Individual Entities 页面上,指定类名称: Usecases 单击 FINISH。 配置 JPA 属性: 选择 WLUsecasesJPAProject > JPA Tools > Configure JPA Entities。 选择 Available JPA Entities: Usecases。 选择 Update class list in persistence.xml,然后单击 Next。 选择 Primary Key,选择 seqno,然后单击 Next。 选择 Named Queries,然后单击 Default 按钮。 选择
Concurrency Control,然后指定 Collision Attribute:seqno: int 选择 Other。选择 Add an equals and hashCode method if not present。 选择 Other。选择 Convert Java Set objects to Java List objects。 选择 Other。选择 Convert Java SQL Temporal Types to Java Util Temporal Types。 单击 FINISH。 配置项目,以便将它用于 Java Database Connectivity (JDBC) 部署: 选择 WLUsecasesJPAProject > JPA Tools > Add JPA Manager Beans。 选择 Available JPA Entities: Usecases。 选择 Next。 检查并接受默认选项。 单击 Finish。 添加 JPA 管理器 bean: 选择 WLUsecasesJPAProject > JPA Tools > Configure Project for JDBC
Deployment。 检查并接受默认选项。 单击 OK。 Usecases.java 实体类 这是一个 JPA 生成的 Java 类,表示 FIPSDB DB2 数据库的 USECASES 表中的一行。这个类包含一组构造函数、GET、SET、hashCode 和 equals 方法。 UsecasesManager.java 实体管理器类 这是一个 JPA 生成的 Java 类。为了让应用程序能够管理相关的实体类,JPA 定义了 EntityManager 的概念。EntityManager 帮助实体类将它们的状态持久化到基础的关系数据库表中。一个相关实体类的集合在 JPA 中称为一个持久性单元。应用程序中的一个 EntityManager 实例可管理一个持久性单元,使用 persistence.xml 配置文件创建可以编程方式访问的持久性上下文。