在你开始前
了解对本教程有什么期望,以及如何充分利用本教程。
关于本教程
IBM®WebSphere®Application Server V8.0为使用RESTful Web服务(JAX-RS)1.1的Java™API提供了对代表性状态转移(REST)应用程序的简化开发的支持。 Rational®Software Architect(以下称为Software Architect)提供工具来设计,开发,测试和打包JAX-RS 1.1 REST应用程序,以部署到WebSphere Application Server V8(以下称为Application Server)。 本教程分步介绍了Software Architect中所需的开发任务以及部署到Application Server的其他步骤。 您可以下载解决方案集或执行一系列开发任务以自行创建解决方案。
目标
使用虚构的业务场景,本教程的目标是:
- 演示Software Architect V8中的工具支持,用于开发JAX-RS 1.1 RESTful服务
- 演示如何使用上述模式将传统应用程序中嵌入的现有业务功能公开为同时支持XML和JavaScript对象表示法(JSON)负载的JAX-RS 1.1 RESTful服务
- 演示对Java EE 6的Application Server V8支持以及将Web Service实现部署为JAX-RS 1.1 RESTful服务
- 为从业人员提供机会来动手实践,以在Software Architect V8中开发JAX-RS 1.1 RESTful服务并将解决方案部署到Application Server V8。
先决条件
本教程是为具有中高级技能的应用程序程序员编写的。 您应该熟悉使用Rational Software Architect并了解REST应用程序。
系统要求
要运行本教程中的示例,您需要Rational Software Architect V8和WebSphere Application Server V8。
业务场景
HTBanking Corporation当前控制通过其总部以外托管的旧版Java应用程序对银行信息的所有访问。 银行子公司在处理贷款请求时必须提交要求帐户信息的手册和表格。 然后,位于HTBanking总办公室的客户代表将使用托管在其个人工作站上的Java Swing应用程序处理这些请求。
由于重大增长预测,HTBanking Corporation的战略业务和IT团队已决定扩展其旧系统的接口功能。 该计划是通过允许其子公司通过丰富的桌面和移动用户界面访问和操纵帐户来支持增长的,这些桌面和移动用户界面利用了基于标准的技术,例如异步JavaScript和XML(AJAX),REST Web服务和Dojo。 这种扩展将使贷款的处理更加有效,并使子公司能够减轻对帐户信息的管理。
技术方案
在仔细检查了扩展接口解决方案的实现和部署选项之后,HTBanking IT团队决定使用IBM®WebSphere®Application Server V8.0。 Application Server使用用于RESTful Web服务(JAX-RS)1.1的Java API为简化的REST应用程序开发提供支持。 同时,开发团队将使用Rational®Software Architect实施该解决方案,该软件提供了用于设计,开发,测试和打包JAX-RS 1.1 REST应用程序以部署到Application Server的工具。
作为解决方案的一部分使用和交付的设计模式和代码工件如图1所示。
图1.设计模式:使用JAX- RS 1.1将传统应用程序作为REST Web服务启用
实施解决方案
本教程各节的概述以及实现该解决方案的步骤为:
- 导入旧版应用程序代码和支持服务(XML和JSON Helpers)
- 配置WebSphere Application Server V8运行时环境
- 创建JAX-RS 1.1 REST服务和Java EE模块
- 实现JAX-RS 1.1应用程序配置和资源类
- 修改Web模块部署描述符
- 将解决方案部署到运行时测试环境
- 使用REST HTTP客户端验证解决方案
可选:如果您更愿意,可以导入完整的解决方案(从本教程的“ 下载”部分提供的示例工件中提取归档文件JAXRS-RESTService_solution_devWorks.zip ,然后跳过以将解决方案部署到运行时测试环境 )。 但是,您必须首先配置运行时环境,如配置WebSphere Application Server V8运行时环境中所述 。
导入旧版应用程序代码和支持服务(XML和JSON Helpers)
本节概述了导入作为解决方案一部分提供的代码的步骤。
- 启动Rational Software Architect V8.0并创建一个新的工作区。
图2.配置WebSphere Application Server对话框
- 要打开Java EE透视图,请选择“ 窗口”>“打开透视图”>“其他” 。
- 选中显示所有复选框,然后选择Java EE并单击确定。
- 如果系统提示您确认启用新功能,请选中“ 始终启用活动并且不再询问我”框,然后单击“确定”(图3)。
图3.确认启用对话框
- 将“可下载资源”部分中提供的devWorks_LegacyBankAppArtifacts.zip存档文件下载到您选择的目录位置。 存档文件中包含以下文件:
文档名称 | 描述 |
JAXRS-RESTService_devWorks.zip | 包含旧版银行应用程序,旧版包装程序服务项目和用于验证解决方案的RESTClient。 包含代码和日志摘要的文件位于TextFiles项目中。 |
JAXRS-RESTService_solution_devWorks.zip | 包含准备好部署到WebSphere Application Server V8.0运行时环境的完整解决方案 |
- 选择File> Import,然后在Import对话框中,选择General> Existing Projects into Workspace ,然后单击Next (图4)。
图4.导入:“选择导入类型”对话框
- 单击选择归档文件项目符号,然后单击浏览 。
- 浏览到提取的下载位置,选择LegacyBankAppCode.zip文件,然后单击“ 打开” 。
- 验证是否找到了所有必需的项目(图5),然后单击Finish 。
图5.导入:“导入项目”对话框
导入到工作空间中的项目和文件如图6所示,包括以下内容:
- LegacyBankApp 。 包含旧版银行应用程序代码的Java项目
- LegacyBankAppWrapperService 。 包含包装服务的Java项目,该服务调用旧版银行应用程序代码。 JAX-RS框架将在此类上调用方法。
- RESTClient / Java项目,其中包含用于验证解决方案的测试客户端。
图6.导入到工作空间中的项目和文件
这就完成了导入由遗留银行应用程序的JAX-RS 1.1 REST服务使用的遗留应用程序代码工件所需的步骤。
配置WebSphere Application Server V8.0运行时环境
本节概述了配置新的WebSphere Application Server V8.0以部署JAX-RS REST服务所需的任务。
- 在“服务器”视图中,右键单击并选择“ 新建”>“服务器” 。
- 在“定义新服务器”对话框中,选择WebSphere Application Server v8.0作为要创建的服务器类型。
- 在“服务器运行时环境”字段中,选择“ 创建新的运行时环境” ,然后单击“ 下一步” (图7)。
图7.创建服务器:定义一个新服务器对话框
- 在“应用程序服务器运行时环境”对话框中,单击“ 浏览”导航到“安装目录”。 选择WebSphere Application Server V8.0的< installation_directory >,然后单击Next (图8)。
图8.创建服务器:指定服务器运行时环境
- 在“ WebSphere Application Server设置”对话框中,如果有现有概要文件,那么可以从“概要文件名称”下拉列表中选择它,也可以创建一个新的概要文件。
- 要创建新的配置文件,请单击Configure profile链接,然后执行其余步骤(图9)。
图9.创建服务器:指定服务器设置
- 如果提示创建运行时环境,请单击是 。
- 在Preferences窗口中,展开Preferences> Server> WebSphere Application Server ,然后单击Run Profile Management Tool (图10)。
图10.创建服务器:选择运行配置文件管理工具
- 在WebSphere Customization Toolbox窗口中,单击Create (图11)。
图11.创建服务器:创建配置文件
- 在Environment Selection对话框中,选择Application Server ,然后单击Next (图12)。
图12.创建服务器:新的概要文件环境选择
- 在“概要文件创建选项”对话框中,选择“ 高级概要文件创建” ,然后单击“ 下一步” (图13)。
图13.创建服务器:Profile Creation Options对话框
- 在Optional Application Deployment对话框中,确保已选中Deploy admin console ,取消选中Deploy default application并单击Next (图14)。
图14.创建服务器:Profile Application部署对话框
- 在“概要文件名称和位置”对话框中,输入概要文件的名称(例如: devWorksProfile )
- 更改Profile目录以包括应用程序服务器的名称,然后单击Next (图15)。
图15.创建服务器:概要文件名称和位置
- 在“节点和主机名”对话框中,为“ 节点名” ,“ 服务器名”和“ 主机名”输入适当的值,然后单击“ 下一步” (图16)。
图16.“创建服务器:概要文件节点和主机名”对话框
- 在“管理安全性”对话框中,选中“ 启用管理安全性”,并为“ 用户名”和“ 密码”输入适当的值,然后单击“ 下一步” (图17)。 注意:请记住该用户名,以访问管理控制台以及从命令行启动或停止服务器。
图17.创建服务器:Profile Administrative Security对话框
- 在“安全证书(第1部分)”对话框中,将所有字段保留为默认值以创建新的默认个人证书和根签名证书,然后单击“ 下一步” (图18)。
图18.创建服务器:Profile Security证书I对话框
- 在“安全证书(第2部分)”对话框中,将所有字段保留为默认值以创建新的默认个人证书和根签名证书,然后单击“ 下一步” (图19)。
图19.创建服务器:Profile Security Certificate II对话框
- 在“端口值分配”对话框中,接受默认生成的端口,然后单击“ 下一步” (图20)。 记下HTTP传输端口,因为在本教程的稍后阶段HTTP客户端将需要它。
图20.创建服务器:端口分配
- 在“窗口服务定义”对话框中,取消选中“将应用程序服务器进程作为Windows服务运行” ,然后单击“ 下一步” (图21)。
图21.创建服务器:“服务器Windows服务”对话框
- 在“ Web服务器定义”对话框中,将所有字段保留为默认值,然后单击“ 下一步” (图22)。
图22.创建服务器:Web服务器定义对话框
- 查看Profile Creation Summary信息,然后单击Create (图23)。
图23.创建服务器:概要文件创建摘要
- 在“概要创建完成”对话框中,取消选中“ 启动第一步”控制台 ,然后单击“ 完成” (图24)。
图24.创建服务器:Profile Creation Complete对话框
图25.创建服务器:更新的配置文件列表
- 在“首选项”窗口中,展开“首选项”>“服务器”>“ WebSphere Application Server” ,然后单击WebSphere Application Server V8.0安装的运行时,以刷新概要文件列表。 新服务器应出现在配置文件部分。 单击OK(图26)。
图26.创建服务器:更新的服务器和配置文件视图
- 在“ WebSphere Application Server设置”对话框中,在概要文件名称下拉菜单中选择新创建的概要文件。 输入用户ID和密码,然后单击下一步 (图27)。
图27.创建服务器:“配置WebSphere Application Server设置”对话框
- 在“添加删除项目”对话框中,单击“ 完成” 。
这完成了配置WebSphere Application Server V8.0运行时环境以部署旧版银行应用程序的JAX-RS 1.1 REST服务所需的步骤。 在“服务器”视图中,您现在应该看到处于“已停止”状态的新创建的服务器。
创建JAX-RS 1.1 REST服务和Java EE模块
- 在Java EE透视图中,选择“ 文件”>“新建”>“动态Web项目” 。
- 在“动态Web项目”对话框中,输入LegacyBankAppWeb作为项目名称。
- 在“目标运行时”下拉菜单中,选择WebSphere Application Server V8.0 。
- 在“配置”下拉菜单中,选择“ IBM JAX-RS配置” 。
- 在EAR项目名称下拉菜单中,输入LegacyBankAppEAR作为EAR项目,以部署新创建的Web模块,然后单击Next (图28)。
图28.“动态Web项目创建”对话框
- 在“为Java应用程序配置项目”对话框(“ Src文件夹”对话框)中,将所有字段保留为默认值,然后单击“ 下一步” (图29)。
图29. Dynamic Web Project Src文件夹对话框
- 在“ Web模块设置”对话框中,选中“ 生成web.xml部署描述符”框,然后单击“ 下一步” (图30)。
图30.动态Web项目模块设置
- 在“ JAX-RS功能”对话框中,将所有字段保留为默认值,然后单击“ 完成” (图31)。
图31.“动态Web项目JAX-RS设置”对话框
- 如果系统提示您打开关联的透视图(即Web透视图),请单击“ 否” 。
- 在企业资源管理器视图中,展开LegacyBankAppEAR项目,右键单击LegacyBankAppEAR> LegacyBankAppEAR> Utility JAR,然后选择Modify 。
- 在LegacyBankAppEAR的Properties窗口中,单击Deployment Assembly,然后在EAR Module Assembly窗格中,单击Add (图32)。
图32. EAR模块部署组装
- 在“选择装配体指令类型”对话框中,选择“ 项目” ,然后单击“ 下一步” (图33)。
图33. EAR Module Deployment Assembly:“ Select Assembly Directive”对话框
- 在“选择要包含的项目”对话框中,选择LegacyBankAppWrapperService项目,同时按下CTRL键的同时选择LegacyBankApp项目,然后单击Finish (图34)。
图34. EAR Module Deployment Assembly:“选择项目”对话框
- 确认LegacyBankAppWrapperService和LegacyBankApp项目出现在EAR Module Assembly窗格中,然后单击OK(图35)。
图35. EAR模块部署组装:实用程序项目和打包
图36. LegacyBankAppEAR实用程序JAR
- 在Enterprise Explorer视图中,右键单击LegacyBankAppWeb项目,然后选择Build Path> Configure Build Path… 。
- 在LegacyBankAppWeb的Properties窗口中,单击Projects选项卡,然后单击Add (图37)。
图37. LegacyBankAppWeb Java构建路径
- 在“必需的项目选择”对话框中,选择“ LegacyBankAppWrapperService”项目,然后单击“确定”(图38)。
图38. LegacyBankAppWeb Java Build Path Select Projects对话框
图39. LegacyBankAppWeb更新的Java构建路径
这就完成了为旧银行应用程序的JAX-RS 1.1 REST服务创建关联的工件和Java EE模块所需的步骤。
实现JAX-RS 1.1应用程序配置和资源类
- 在企业资源管理器中,右键单击LegacyBankAppWeb> Java资源> src文件夹,然后选择新建>类 。
- 在“软件包”字段中,输入com.ibm.wrapper.bankapp.rest.resources作为软件包名称。
- 在Name字段中,输入CustomerAccountResource作为类名,然后单击Finish (图40)。
图40.创建JAX-RS资源类
- 右键单击LegacyBankAppWeb> Java资源> src> com.ibm.wrapper.bankapp.rest.resources包,然后选择New> Class 。
- 在名称字段中,输入CustomerAccountApplication作为类名称。
- 在Superclass字段中,输入javax.ws.rs.core.Application作为Superclass,然后单击Finish (图41)。
图41.创建JAX-RS应用程序配置类
- 在企业资源管理器视图中,展开LegacyBankAppWeb> Java资源> src> com.ibm.wrapper.bankapp.rest.resources包。
- 右键单击CustomerAccountApplication类,然后选择“ 打开” 。
- 打开TextFiles> CodeSnippets.txt文件,然后将代码从=== CustomerAccountApplication ===部分复制到CustomerAccountApplication类中(图42)。
图42. JAX-RS CustomerAccountApplication代码
- 单击文件>保存 。
- 在企业资源管理器视图中,展开LegacyBankAppWeb> Java资源> src> com.ibm.wrapper.bankapp.rest.resources包。
- 右键单击CustomerAccountResource类,然后选择“ 打开” 。
- 打开TextFiles> CodeSnippets.txt文件,然后将代码从=== CustomerAccountResource ===部分复制到CustomerAccountResource类中(图43)。
图43. JAX-RS CustomerAccountResource代码
- 单击文件>保存 。
这就完成了为旧银行应用程序的JAX-RS 1.1 REST服务创建和实现JAX-RS代码工件所需的步骤。
修改Web模块部署描述符
- 在企业资源管理器中,展开LegacyBankAppWeb并导航到LegacyBankAppWeb> WebContent> WEB-INF 。
- 右键单击web.xml文件,然后单击“ 打开” 。
- 在Web应用程序3.0部署描述符编辑器中,单击设计选项卡 。
- 选择Web应用程序(LegacyBankAppWeb)> Servlet(JAX-RS Servlet) ,然后单击Add (图44)。
图44. LegacyBankAppWeb部署描述符
- 在“将项目添加到Servlet”对话框中,选择“ 初始化参数” ,然后单击“确定”(图45)。
图45. LegacyBankAppWeb部署描述符“添加项目”对话框
- 在新添加的servlet初始化参数的Design选项卡的Details部分中,在name和value字段中输入以下内容(图46): Name * : javax.ws.rs.ApplicationValue * : com.ibm.wrapper.bankapp.rest.resources.CustomerAccountApplication
图46.具有初始化参数的LegacyBankAppWeb部署描述符
- 将更改保存到Web部署描述符,然后关闭编辑器。
这就完成了修改旧银行应用程序的JAX-RS 1.1 REST服务的Web模块部署描述符所需的步骤。 现在,该解决方案已准备好部署到WebSphere Application Server V8.0运行时环境。
将解决方案部署到运行时测试环境
- 在服务器视图中 ,右键单击服务器,然后选择“ 添加和删除” 。
- 选择LegacyBankAppEAR并单击Add (图47)。
图47.将LegacyBankAppEAR添加到服务器
- 单击Finish (图48)。
图48. LegacyBankAppEAR部署到服务器
- 在“ 服务器视图”中 ,右键单击服务器,然后单击“ 启动” 。
这完成了将旧版银行应用程序的JAX-RS 1.1 REST服务部署到Software Architect中配置的WebSphere Application Server运行时环境所需的步骤。
使用REST HTTP客户端验证解决方案
- 展开RESTClient> src> com.ibm.simple.bankapp.client 。 右键单击RESTHTTPClient.java并选择Open (图49)。
图49.选择并打开RESTHTTPClient以进行编辑
图50. RESTHTTPClient代码更新
- 右键单击RESTHTTPClient.java,然后选择Run As> Java Application (图51)。
图51.启动RESTHTTPClient
- 测试客户端的输出显示在文件TextFiles> RESTHTTPClientOutput.txt中的下载下。 注意:服务器端代码将在测试客户端验证帐户已被删除时抛出“帐户不存在”的应用程序异常(请参阅TextFiles> ServerRuntimeOutput.txt )
- 测试和验证完成后,在服务器视图中,右键单击服务器>停止 。
这完成了验证将遗留银行应用程序的JAX-RS 1.1 REST服务成功部署到Software Architect中配置的WebSphere Application Server运行时环境所需的步骤。
翻译自: https://www.ibm.com/developerworks/websphere/tutorials/1111_chinoda/1111_chinoda.html