IBM® WebSphere Process Server 提供了些区别接口来访问业务模块比如基于 HTTP 或 JMS Web 服务和服务组件架构(SCA)绑定为了帮助您利用自己业务模块本教程将介绍种将 REST 协议应用于模块接口思路方法
目标
为支持 RESTful 请求 WebSphere Process Server 业务模块创建个 HTTP 接口
为举例场景创建个业务对象
为举例场景创建个业务模块
为举例场景创建并填充个数据库
使用普通 Web 浏览器测试您应用
先决条件
尽管本文提供了实现举例场景分步指导但是有关 WebSphere Integration Developer 和 WebSphere Process Server 基础知识会非常有帮助本文提供了必要 Java™ 编程内容因此您不需要具备 Java 编程技能
系统需求
本教程需要使用 WebSphere Integration Developer 版本 6.1 以及 WebSphere Process Server 测试环境版本 6.1可以使用这些产品所支持任何平台然后需要使用个 Web 浏览器(例如 Firefox、Internet Explorer)来测试 RESTful 接口但是也可以使用任何可发出 HTTP 请求工具
持续时间
完成本教程需要大约 2 个小时
什么是 REST?
代表性状态传输(Representational State TransferREST)是种通过 URL 访问 Web 资源轻量级思路方法它利用了 4 种标准 HTTP 请求思路方法(GET、POST、PUT 和 DELETE)对 Web 应用操作这意味着同个 URL 可能会导致区别应用行为例如如果 URL 为 http://myhost.mydo.com/BookApp/rest/book/100010那么对于个 HTTP GET 请求它将检索 ID 为 100010 图书数据但是如果请求思路方法为 HTTP DELETE那么它将删除这本图书
通过这种方式就可以获得种简单、轻量级思路方法来控制 Web 应用操作它不需要了解应用在服务器端知识这里使用了 “轻量级” 词和 HTTP SOAP 请求相比只有很少数据被发送给应用服务器
可以使用多种思路方法为 Web 模块实现 RESTful 接口例如 RESTlet 框架或仅仅是个可以截获请求简单 servlet 或 servlet 过滤器然而本教程将展示 WebSphere Integration Developer(简称为 Integration Developer)中种标准工具如何利用新 HTTP 绑定实现个 RESTful 接口
HTTP 绑定
HTTP 绑定特性在 WebSphere Integration Developer 和 WebSphere Process Server 版本 6.1 中引入这个绑定使用常用 HTTP 数据传输协议它允许访问原始 HTTP 请求HTTP 绑定由 Web 服务绑定演化而来尽管 SOAP/HTTP Web 服务绑定非常流行、非常健壮但是人们需要种更加轻量级思路方法
绑定行为由两种区别类确定:
选择器
数据绑定
WebSphere Process Server(此后称为 Process Server)以开箱即用方式附带了两个预定义选择器实现和 3个预定义数据绑定
基于 TargetFunctionName 头部(header) HTTP 选择器
基于 URL 和 HTTP 思路方法 HTTP 选择器
HTTP 字节消息数据绑定
HTTP SOAP 消息数据绑定
HTTP XML 消息数据绑定
选择器将决定个传入请求是否映射到接口思路方法实现类将查看请求数据从而可以决定为请求提供服务并根据些条件比如 URL、思路方法类型或头部信息将请求传递给相应接口
旦服务接受了请求将相应地处理请求负荷实现 HTTP 数据处理类将实现 HTTPStreamDataBinding 接口该接口定义了思路方法 “getDataObject”这意味着该类将实现所有必需逻辑将请求负载转换为 Export 接口定义数据对象
实现个 RESTful GET 操作
本例中使用业务模块是个简单应用可以根据 HTTP URL 中指定 ISBN 书号从数据库中检索某本书信息如图 1 所示
图 1. 样例场景
这个数据库通过 WebSphere JDBC Resource Adapter 访问接下来模块将使用个 Web 服务导出来测试它基本功能旦将模块用于获取数据那么个 RESTful 导出将被添加到模块中再次为了保持简单性我们将只遍历 RESTful GET 请求实现但是其他 RESTful CRUD 操作也是可行
设置环境
创建数据库
假设您已经有了个数据库例子比如个 DB2® 例子可以创建个仅包含个表举例 Books 数据库(为保持简单性)假设某本书具有个惟编号(ISBN 编号)、个标题和个作者脚本将创建 “Books” 表并填充些样例数据如清单 1 所示
清单 1. Books.sql
CREATE TABLE Books (
isbn BIGINT NOT NULL PRIMARY KEY,
title VARCHAR(30),
author VARCHAR(20)
);
INSERT INTO Books (isbn, title, author)
VALUES (100010, 'Parry Hotter', 'D.J. Howling');
INSERT INTO Books (isbn, title, author)
VALUES (100020, 'I Win', 'U. Lose');
INSERT INTO Books (isbn, title, author)
VALUES (100030, 'Its Unfair!', 'Y. Me');
INSERT INTO Books (isbn, title, author)
VALUES (100040, 'Happy New Year!', 'Mary Christmas');
INSERT INTO Books (isbn, title, author)
VALUES (100050, 'Shocking facts of le', 'Alec Tricity');
用于创建数据库命令为:
db2 create db BOOKDB using code UTF8 territory US
db2 connect to BOOKDB
db2 -tvf Books.sql
现在您已经为即将创建模块准备好了数据库
定义 Java 身份验证和授权条目
要访问数据库需要在 Process Server 例子内定义个 Java Authentication and Authorization Services (JAAS) 条目这个 JAAS 条目被称为 “BookDBAuthAlias”将由 JDBC Resource Adapter 使用尽管创建 JAAS 条目任务是由 Process Server 管理员负责但是可以使用清单 2 所示样例 Jython 脚本来创建 JAAS 条目检查并修改设置以符合您需求
清单 2. CreateJAAS.jy
security = AdminConfig.getid('/Security:/')
jaasAttrs = [
['alias', 'BookDBAuthAlias'],
['userId', 'db2run'],
['password', 'db2run']]
AdminConfig.create('JAASAuthData', security, jaasAttrs)
AdminConfig.save
假设 WebSphere Integration Developer(此后简称为 Integration Developer)中有个 Process Server 服务器在 Integration Developer 中右键单击 Servers 选项卡运行该脚本然后选择 Run administrative script
在图 2 所示对话框中输入以上脚本路径和文件名然后填充相应 WebSphere 管理员凭证并单击 Run
图 2. 运行 WebSphere Administrative 脚本对话框
脚本成功运行后数据源和身份验证条目将被添加到 Process Server 环境
创建项目
注意:为了提供方便WebSphere Integration Developer Project Interchange 文件 RestModuleRA_PI.zip 可以通过下载获得该文件中包含有这个项目
启动 WebSphere Integration Developer 并单击 File > New > Project选择项目类型 Module 并单击 Next如图 3 所示
图 3. 新项目向导
为模块输入个名称例如 RestModule然后单击 Finish如图 4 所示
图 4. 新模块向导
下步是在项目中创建并使用 JDBC Resource Adapter在 Business Integration 视图中右键单击 RestModule 项目并选择 New > External Service将显示 “New External Service” 屏幕如图 5 所示
图 5. External Service 向导
选择 Adapters 并单击 Next在下个对话屏幕中(图 6)选择 IBM WebSphere Adapter for JDBC 并单击 Next
图 6. 适配器类型选择
将 Adapter Project 名称设置为 Rest_JDBC如图 7 所示然后单击 Next
图 7. 连接器项目配置
在下个对话屏幕中(图 8)单击 Add 并导航到数据库 JDBC 驱动器位置选择所有必需文件然后单击 Next
图 8. JDBC 驱动器配置
如图 9 所示选择 Outbound 作为处理方向然后单击 Next
图 9. 适配器处理方向配置
下个对话框(图 10)需要填充所有 JDBC 数据库访问设置将 Database 字段设置为 BookDB 并填充用户名和密码
图 10. 数据库访问配置
单击 Next 将转到 Object Discovery 屏幕(图 11)单击 Run Query 按钮然后在左侧面板中展开 DB2RUN > Tables 并双击 BOOKS
图 11. 数据发现对话框
单击 Next再次单击 Next在下个对话屏幕中接受所有默认操作(图 12)
图 12. 数据操作定义对话框
将 “J2C Authentication Data Entry” 设置为 BookDBAuthAlias 并单击 Next如图 13 所示
图 13. 身份验证配置对话框
在 Service Location Properties 屏幕中(图 14)取消选择 Use default 并在 Folder 字段中输入 resourceAdapter
图 14. 服务位置配置对话框
单击 Finish
您需要定义个表示 ISBN 书号业务对象该业务对象将在创建 RESTful 接口时用到在 Business Integration 菜单中右键单击 Data Types > New > Business Object将业务对象命名为 ISBN(图 15)并单击 Finish
图 15. 新业务对象向导
在 ISBN 选项卡中右键单击 ISBN 业务对象并单击 Add Field个新字段将被添加到业务对象将业务对象重命名为 isbn其类型被修改为 结果如图 16 所示
图 16. Business Object 编辑器
接下来需要创建个接口定义来从外部访问模块启动个 Web 服务接口这样就可以在添加 RESTful 接口的前测试模块基本功能
在 Business Integration 菜单中右键单击 Interfaces > New > Interface在对话框(图 17)中填入接口名例如 BookWS然后单击 Finish
图 17. New Interface 向导
右键单击 BookWS 选项卡(图 18)工作区然后选择 Add Request Response Operation
操作 getBook将 isbn 输入重新指定为整数类型然后将 bookdata 输出重新指定为 Db2runDb2runBooks 类型保存接口
图 18. 接口操作编辑器
在 Assembly Diagram 中从左侧菜单中选择 Process 并将其拖拽到工作区中在 Business Integration 视图中将 BookWS 接口拽到工作区将显示另个对话框(图 19)在其中选择 Export with Web Service Binding选择 Export with Web Service Binding然后在下个对话框(图 20)中选择 soap/http
图 19. Web Service Export 类型对话框
图 20. Web Service Export 传输类型对话框
单击 OK 并保存模块通过选择 BookWSExport1 导出将导出重命名为 BookWSExport(图 21)在下面 Description Properties 选项卡中在 Name 字段中按下 Alt+Sht+R
图 21. Edit Artacts 对话框
单击 OK 并保存项目
通过将黄色 “o” 拖拽到流程组件的上左侧 BookWS 导出将 BookWS 导出连接到模块在显示对话框中单击 Yes(图 22)接下来将黄色 “o” 拖拽到 Component1 右侧末端并将其放到 JDBCOutboundInterface 导入上面单击对话框中 OK 并再次保存项目
双击组件在组件实现生成对话框中在出现提示时选择 Yes(图 22)
图 22. 实现通知对话框
接受将在其中生成实现默认文件夹
访问数据库
下步是访问数据库如前所述这里没有什么让人惊奇内容模块将使用 JDBC Resource Adapter 导入来访问数据库中数据
在 Component 选项卡中将 Invoke 操作拖到 Receive 和 Reply 操作的间将此操作重命名为 AccessBookDB(图 23)
图 23. Assembly Diagram Database Access 操作
在选择了 AccessBookDB 操作情况下单击下方 Properties 选项卡中 Details 区段单击 Browse 按钮将 Partner 字段设置为 JDBCOutboundInterfacePartner 并将 Operation 字段设置为 retrieveDb2runDb2runBooksBG单击 Input 变量中 none 字段然后单击 New变量 BookBG 并单击 OK(图 24)
图 24. Business Object 变量设置
单击 Output 变量 none 字段然后也将它设置为 BookBG然后保存工作
最新评论