使用 IBM Worklight 进行服务器端移动应用程序开发,第 1 部分: IBM Worklight 适配器与 Java 业务逻辑的集成

本系列介绍了如何结合使用 IBM® Rational® Application Developer for WebSphere® Software 和 IBM® Worklight 开发用于移动设备的应用程序,这些移动设备包括运行 Android、iOS、BlackBerry 和 Microsoft Windows Metro 操作系统的移动设备。在第一篇文章中,Bhargav Perepa 介绍了如何在 Rational Application Developer 中开发和测试一个 Java 应用程序,创建一个自定义 Java 应用程序逻辑包作为一个在移动应用程序开发中使用的库,使用 Worklight 开发一个服务器端移动应用程序组件来使用该库,并使用 Worklight Studio 测试该移动应用程序。

Bhargav Perepa, IT 专家, IBM

Bhargav PerepaBhargav Perepa 是位于华盛顿特区的 IBM Federal Software Group 的 WebSphere 架构师和 IT 专家。他曾经是 IBM Austin WebSphere Development Lab 的 WebSphere 开发人员,并在 IBM 芝加哥积累了一些 Smalltalk 和 C++ 开发经验。Bhargav 拥有芝加哥伊利诺伊理工学院计算机科学硕士学位,以及奥斯汀市德克萨斯大学的 MBA 学位。



2013 年 7 月 01 日

下载 IBM® Rational® Application Developer 试用版  |  IBM® Worklight Developer Edition
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

IBM® Rational® Application Developer for WebSphere Software Version 8.5.1 iFix1 方便了 Java、Java Enterprise Edition (JEE)、Web 2.0、移动、OSGi、门户和面向服务的架构 (SOA) 业务应用程序的快速开发、测试和操作部署。对于移动应用程序开发,它包含一些处理 HTML 5、CSS3、JavaScript、Dojo 工具包和 JavaScript Object Notation (JSON) 编程结构的生产力特性。它还无缝集成了 IBM® WebSphere® Application Server 编程模型和支持的运行时环境。

IBM® Worklight® 平台方便了跨 Android、iOS、BlackBerry 和 Microsoft Windows Metro 移动操作系统,以一种与平台无关的、供应商不可知的方式快速开发、测试和交付移动应用程序。它包含以下组件:

Worklight Application Center
用作一个企业应用程序存储来保留移动应用程序,并在整个组织中的架构师、开发人员、测试人员和用户之间共享移动应用程序。
 
Worklight Console
使用浏览器用户界面来管理移动应用程序和适配器。
 
Worklight Server
用于测试和部署开发的移动应用程序。
 
Worklight Device Runtime Layer
在移动设备上运行,比如智能电话和平板电脑。
 
Worklight Studio
用于开发原生、混合和标准的 Web 移动应用程序。它支持灵活地开发能够满足量身定做的条件的移动应用程序,包括原生、混合或 Web 编程模型。它还支持开发服务器端移动组件,这些组件通常部署在 Worklight 服务器之上,该服务器在任何受支持的 IBM® WebSphere® Application Server 配置文件(Liberty、Base 和 Network Deployment)上运行。
 

在本文中,您将学习如何使用 Rational Application Developer for WebSphere 8.5.1 iFix1 开发人员工作台开发和测试一个 Java 应用程序。随后,您将学习如何开发和测试一个移动应用程序,它包含一个使用之前开发的 Java 应用程序的服务器端适配器组件。IBM Worklight 框架支持开发服务器端组件来调用封装在 Java、Web 服务、REST 服务和 Enterprise JavaBean (EJB) 组件中的业务逻辑。


用例架构

在这个基于虚构的客户需求的示例中,您需要使用 Rational Application Developer for WebSphere 工作台开发一个 Java 应用程序,并测试这个在 WebSphere Application Server 8.5.0.2 运行时实例上运行的应用程序。客户的需求呼吁将开发和部署的应用程序扩展到智能电话和平板电脑,通过扩展和转换策略来利用已开发或已部署的业务逻辑,而不是重新发明创造(“淘汰并更换”)。这些需求定义了两个标为 UsecaseUsecases 的概念:

Usecase
这是对必要的移动应用程序特征的一种封装,表示应用程序的客户端、服务器和中间件方面。图 1 中的各行表示 Usecase 概念。
 
Usecases
这些是对各个可能的用例实例或概念的集合的封装。图 1 给出了 Usecase 实例的 9 种可能的组合。此表表示本文中的 Usecases 概念。
 
图 1. Usecase 和 Usecases 需求的封装
客户端、类型、服务器操作系统、后端等详细信息

图 1 的大图

在您的 Java 应用程序中,定义了两个接口来采集客户需求:一个表示 Usecase 概念,另一个表示 Usecases 概念。您定义了这两个接口的实现,还定义了一个额外的类来捕获您的逻辑可能遇到的任何类型的异常或错误。表 1 总结了您计划在 Rational Application Developer 中开发,然后在 WebSphere Application Server 上部署和测试的 Java 应用程序开发工件。

表 1. Java 应用程序工件
序列号工件名称工件类型关系备注
1 UsecaseInterface.java Java 接口 抽象契约 定义 Usecase 概念的抽象契约
2 Usecase.java Java 类 实现 UsecaseInterface 抽象契约 UsecaseInterface 的具体实现
3 UsecasesInterface.java Java 接口 抽象契约 定义 Usecases 概念的抽象契约 – 作为 Usecase 实例的一个有限的集合
4 Usecases.java 类class 实现 UsecasesInterface 抽象契约 UsecasesInterface 的具体实现
5 UsecasesException.java Java 类 实现用户定义的异常 通常由 Usecase 和 Usecases 的实现使用

用例实现方法

用例实现由 6 个不同活动组成,大体可分为以下步骤:

  • 使用 Rational Application Developer 开发一个 Java 应用程序。
  • 使用 Rational Application Developer 测试该 Java 应用程序。
  • 以 Java 归档文件(.jar 文件)的形式创建一个 Java 应用程序逻辑包,以供移动应用程序使用。
  • 使用 Worklight Studio 开发一个移动应用程序。
  • 将以 Java 归档文件库形式提供的 Java 应用程序逻辑合并到某个移动应用程序中。
  • 使用 Worklight Studio 测试该移动应用程序,也可将此视为一次对完整场景的端到端测试。

使用 Rational Application Developer 开发一个 Java 应用程序

以下步骤列出了使用 Rational Application Developer for WebSphere Version 8.5.1 执行 Java 应用程序开发的过程。

  1. 启动 Rational Application Developer,指定文件系统上的工作区位置:
    C:\temp\RADWS\WSUsecasesJavaProject
  2. 如果尚未打开用于 Java 应用程序开发的 Java 透视图,请打开它(它位于 Window > Open Perspective > Other > Java),然后单击 OK
  3. 创建一个新的 Java 项目。
    1. 选择 New Java Project 创建向导:File > New > Java Project
    2. 输入项目名称:UsecasesJavaProject
    3. 选择 Use an execution environment JRE: JavaSE-1.6 来设置 Java 运行时环境 (JRE)。
    4. 为剩余选项保留默认设置。
    5. 单击 Next,然后单击 Finish

Java 透视图的 Package Explorer 现在将显示新创建的 Java 项目。

  1. 创建一个新的 Java 包。
    1. 要创建一个新的 Java 包,请选择 usecasesJavaProject > src > New > Package 选项
    2. 接受来源文件夹的默认设置:use casesJavaProject/src
    3. 将 Java 包名称指定为 com.worklight.customcode
    4. 单击 Finish
  2. 创建一个新的 Java 类。
    1. 选择 use casesJavaProject > src > com.worklight.customcode > New > Class
    2. 将 Java 类名称指定为 usecasesException
    3. 将超类名称指定为 java.lang.Exception
    4. 单击 Finish

现在,Java 透视图的 Package Explorer 视图中将出现一个名为 usecasesException.java 的新创建的 Java 类。UsecasesException.java 类接受一个字符串参数,并将它传递给自己的超类 java.lang.Exception。

  1. 创建一个名为 usecaseInterface 的新接口类:
    1. 要在同一个包中创建一个新的接口类,请选择 usecasesJavaProject > src > com.worklight.customcode 包。
    2. 要调用新 Java 接口创建向导,请选择 New > Interface
    3. 输入 usecaseInterface 作为新的 Java 接口类的名称。
    4. 指定扩展的接口:
      java.io.Serializable
  2. 单击 Finish

备注:
UsecaseInterface.java 接口类定义了每个已定义的类属性的公共 getter、setter 方法和一个实现 toString() 功能的方法。

  1. 创建一个名为 usecase 的新 Java 类。
    1. 选择 usecasesJavaProject > src > com.worklight.customcode 包来指定这个类的包名称。
    2. 单击 New > Class 来选择新的 Java 类的创建向导。
    3. 输入类名:usecase
    4. 指定扩展的接口:
      • java.io.Serializable
      • com.worklight.customcode.usecaseInterface
    5. 单击 Finish
  2. 创建一个名为 usecasesInterface 的新接口类。
    1. 选择 usecasesJavaProject > src > com.worklight.customcode 包来指定包名称。
    2. 单击 New > Interface 打开新接口的创建向导。
    3. 输入接口名称:usecasesInterface
    4. 指定扩展的接口:java.io.Serializable
    5. 单击 Finish

您已经定义了 UsecasesInterface.java 类,可在 Package Explorer 视图中看到它,并在一个编辑器中打开它。此接口类定义了 3 个公共方法:getUsecase(id)、getAllUsecases() 和 getNumOfUsecasesInstances()。使用此接口契约,您可运行一个 Usecase 实例的惟一 ID 来检索该实例,或者以 Usecase 实例数组的形式检索所有 Usecase 实例,以一个字符串的形式返回 Usecases 实例属性。

  1. 创建一个名为 Usecases 的新的 Java 类。
    1. 选择 usecasesJavaProject > src > com.worklight.customcode 包来指定包名称。
    2. 单击 New > Class 来打开新的 Java 类的创建向导。
    3. 输入 usecases 作为类名。
    4. 指定扩展的接口:
      • java.io.Serializable
      • com.worklight.customcode.use casesInterface
  2. 单击 Finish

您现在已经创建了 Usecases.java 类。此类实现之前定义的接口,并封装了 Usecases 概念的行为。

  1. 打开此类实现的源文件并分析它。

使用 Rational Application Developer 测试该 Java 应用程序

以下步骤给出了使用 Rational Application Developer 测试您开发的 Java 应用程序的过程。

  1. 选择 Project > Clean > Clean all project,然后单击 OK,构建一个干净的项目。
  2. 选择 UsecasesJavaProject > src > com.worklight.customcode > Usecases.java -> Run As > Java Application,以 Java 应用程序的形式运行该应用程序。

图 2 显示了该 Java 应用程序的正确执行结果,Console 视图中显示了输出。

图 2. 验证应用程序的正确执行(Console 选项卡视图)
Java 应用程序执行情况的 Console 显示

图 2 的大图

以 Java 归档文件的形式创建一个 Java 应用程序逻辑包,以供移动应用程序使用

以下步骤给出了打包 Java 应用程序的过程,使其逻辑可用于移动应用程序中。

  1. 导航到二进制文件夹:
    C:\temp\RADWS\WSUsecasesJavaProject\UsecasesJavaProject\bin
  2. 压缩 com\worklight\customcode 的内容并保存为 UsecasesJavaProjectUtils.jar 文件,如图 3 所示。

该归档文件在 com\worklight\customcode 子目录下包含以下类(参见图 3):

  • Usecase.class
  • UsecaseInterface.class
  • Usecases.class
  • UsecasesException.class
  • UsecasesInterface.class
图 3. 将 Java 应用程序打包为一个适用的库
该图显示了 Java 归档文件库的内容

使用 IBM Worklight Studio 开发一个移动应用程序

以下步骤给出了使用 IBM Worklight Studio Version 5.0.6.1 开发移动应用程序的过程。

创建一个新项目

  1. 启动 Worklight Studio,指定文件系统上的工作区位置 C:\temp\WRKLT\WSAdapterCall2Java
  2. 使用项目创建向导创建新的 Worklight 项目:File > New > Worklight Project
  3. 指定 WLHTTPAdapterCall2JavaProject 作为 Worklight 项目的名称。
  4. 指定 Project Templates: HybridApplication 作为 Worklight 项目模板。
  5. 单击 Next
  6. 指定 WLHTTPAdapterCall2Java 作为应用程序名称。
  7. 保留此屏幕上的剩余默认值,单击 Finish

创建一个新的 Worklight 适配器

  1. 要启动新 Worklight 适配器创建向导,请选择 WLHTTPAdapterCall2JavaProject > adapters > Worklight Adapter
  2. 单击 New > Worklight Adapter 启动该向导。
  3. 指定 Project nameWLHTTPAdapterCall2JavaProject
  4. 指定 Adapter typeHTTP Adapter
  5. 指定 Adapter nameCall2JavaAdapter
  6. 单击 Finish

图 4 显示了编辑器中已配置的适配器元数据文件。

图 4. 编辑器中的 Worklight 适配器元数据
适配器配置文件的具体细节

图 5 在编辑器中显示了适配器逻辑的已完成实现。该适配器在 JavaScript 函数中实现了 3 个方法,每个函数都调用了之前的步骤中开发的 Java 应用程序逻辑。Java 应用程序逻辑以 Java 归档文件库的形式供移动应用程序使用。该实现演示了如何调用 Java 应用程序静态方法,以及 Java 应用程序实例方法。

图 5. 编辑器中的 Worklight 适配器实现
JavaScript 中的适配器函数实现

启动 Worklight 服务器来部署适配器

要启动 Worklight 服务器,可执行以下步骤:

  1. 选择 WLHTTPAdapterCall2JavaProject
  2. 单击 Start Worklight Server 选项。
  3. 将 Worklight 适配器部署到 Worklight 服务器:
    1. 选择 WLHTTPAdapterCall2JavaProject > adapters > Call2JavaAdapter。
    2. 选择 Run As > Deploy Worklight Adapter

图 6 中的 Console 视图确认了 Worklight Studio 中的 Worklight 适配器已成功部署。

图 6. 在 Worklight Studio 控制台中验证适配器部署
控制台显示适配器已成功部署

图 7 在 Worklight 管理控制台中显示 Worklight 适配器已成功部署。

  1. 要验证此部署,可在 Google Chrome 浏览器(首选的浏览器,因为它支持 Web 开发)中输入此 URL:
    http://localhost:8080/console
图 7. 验证适配器部署,Worklight 管理控制台显示
成功的适配器部署的浏览器显示信息

将 Java 应用程序逻辑合并到移动应用程序中

以下步骤描述了如何导入 Java 应用程序库,以便将它用在 Worklight Studio 中开发的移动应用程序中:

  1. 启动导入向导,将 Java 应用程序库导入您的 Worklight Studio 工作区中,以便将它部署到 Worklight 服务器上。
  2. 选择 WLHTTPAdapterCall2JavaProject
  3. 选择 server > lib > import... > File System > Next 导航到该服务器。
  4. 指定要在移动应用程序中使用的 Java 应用程序库。
  5. 选择要从文件系统导入的 .jar 文件:
    c:\temp\UsecaseJavaProjectUtils.jar
  6. 接受默认位置,以便将该文件导入工作区中:
    WLHTTPAdapterCall2JavaProject /server/lib
  7. 单击 Finish

图 8 显示了已完成的 Worklight 应用程序项目,目前已经可以对它进行测试。

图 8. 已完成且适合测试的 Worklight 应用程序项目
Project Explorer 显示了 Call2JavaAdapter

添加 Google Chrome 作为默认浏览器

图 9 展示了如何将 Chrome 浏览器添加到 Worklight Studio 工作台中:

  1. 选择这些菜单选项:Windows > Preferences
  2. 选择 General > Web Browser > Use external web browser
  3. 单击 Select New 按钮。
  4. Name 字段中,指定 Google Chrome 作为浏览器的名称。
  5. Location 字段中,指定浏览器的安装位置:
    C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
  6. 单击 OK
  7. 要使用 Chrome 作为用于测试的默认浏览器,可在 External web browsers 中勾选 Google Chrome
  8. 单击 Apply,然后单击 OK
图 9. 适用于 Chrome 浏览器的 Worklight Studio 配置
Preferences 和 Add External Web Browser 屏幕

使用 Worklight Studio 测试移动应用程序

以下步骤给出了对移动应用程序执行端到端测试的过程。在这个移动应用程序执行过程中,从移动应用程序的适配器组件调用了 Java 应用程序逻辑。

调用 getNumOfUsecasesInstances 静态适配器方法

  1. 对于要测试的静态适配器方法,可选择 getNumOfUsecasesInstances
  2. 选择 WLHTTPAdapterCall2JavaProject > adapters > Call2JavaAdapter
  3. 选择 Run As > Invoke Worklight Procedure
  4. 指定项目名称:WLHTTPAdapterCall2JavaProject
  5. 指定适配器名称:Call2JavaAdapter
  6. 指定过程名称:getNumOfUsecaseInstances(参见图 10)。
  7. 单击 Apply,然后单击 Run
图 10. 过程测试,getNumOfUsecaseInstances
getNumOfUsecasesInstances() 的调用步骤

图 11 显示了 getNumOfUsecasesInstances() 静态适配器方法的成功调用。

图 11. 成功的调用,getNumOfUsecasesInstances()
调用结果确认已成功

图 11 的大图

调用 getUsecase(4) 实例适配器方法

  1. 选择要测试的 getUsecase(4) 实例适配器方法。
  2. 选择 WLHTTPAdapterCall2JavaProject > adapters > Call2JavaAdapter
  3. 选择 Run As > Invoke Worklight Procedure
  4. 指定项目名称:WLHTTPAdapterCall2JavaProject
  5. 指定适配器名称:Call2JavaAdapter
  6. 指定过程名称:getUsecase(4)(参见图 12)。
  7. 单击 Apply,然后单击 Run
图 12. 过程测试,getUsecase(4)
调用 getUsecase(id) 的配置步骤

图 13 显示了 getUsecase(4) 实例适配器方法的成功调用。

图 13. 成功调用,getUsecase(4)
getUsecase 调用结果

图 13 的大图

调用 getAllUsecases() 实例适配器方法

  1. 选择要测试的 getAllUsecases() 实例适配器方法。
  2. 选择 WLHTTPAdapterCall2JavaProject > adapters >WLHTTPAdapterCall2JavaProject
  3. 选择 Run As > Invoke Worklight Procedure
  4. 选择项目名称:WLHTTPAdapterCall2JavaProject
  5. 选择适配器名称:Call2JavaAdapter
  6. 选择过程名称:getAllUsecases()(参见图 14)。
  7. 单击 Apply,然后单击 Run
图 14. 过程测试,getAllUsecases()
调用 getAllUsecases() 的配置步骤

图 15 显示了对 getAllUsecases() 实例适配器方法的成功调用。

图 15. 成功调用,getAllUsecases()
结果细节

图 15 的大图


结束语

本系列的第 1 部分介绍了如何使用 Rational Application Developer for WebSphere Software 工作台开发和测试 Java 应用程序,然后介绍了如何使用 Worklight Studio 开发和测试一个应用了在该 Java 应用程序中开发的逻辑的移动应用程序。总体来讲,本文演示了如何使用 IBM Rational Application Developer for WebSphere 和 IBM Worklight Studio 开发人员工作台工具,将现有的服务器端业务逻辑资产扩展和转换到移动领域,而不执行整体重新设计。请参阅 下载 部分,下载本文的样例工件。在本系列的其他文章中,您将学习如何使用本文中介绍的方法将 JAX-WS Web 服务、JAX-RS 服务和 EJB 3.1 Java Persistence API (JPA 资产)扩展和转换到移动领域。


致谢

衷心感谢 Sujatha Perepa (perepa@us.ibm.com) 和 Roger Snook (rcsnook@us.ibm.com) 提供的审阅反馈、建设性建议、支持和富有成效的团队工作,他们都来自 IBM。


下载

描述名字大小
应用程序样例、配置和日志文件RAD_UsecasesJavaProject.zip73KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational, 移动开发, WebSphere
ArticleID=936390
ArticleTitle=使用 IBM Worklight 进行服务器端移动应用程序开发,第 1 部分: IBM Worklight 适配器与 Java 业务逻辑的集成
publish-date=07012013