级别: 初级 Rakan Khalid, 解决方案架构师, IBM
2009 年 8 月 10 日 本文简要的介绍了 Web 服务策略框架的概念,并通过一个示例带您了解如何利用 IBM® Rational® Application Developer V7.5 配置 Web 服务策略。您可以很容易修改这个例子,使之符合您公司的需求。
Web 服务策略框架(WS-Policy)提供了一种标准的机理,以表达功能,需求以及 Web 服务策略的一般特征。服务提供商使用一种策略来表达状况,在这种条件下它向 Web 服务客户提供服务。通过策略在 Web 服务提供商之间共享的信息,可以由客户使用来决定,怎样与 Web 服务相交流。
IBM® Rational® Application Developer V7.5 使得使用 IBM® WebSphere® Application Server V7.0 的 Web 服务提供商,可以按以下两种方式来共享策略配置:
- 在通过 HTTP
GET 需求获取的公布 WSDL (Web 服务描述语言)文件或者 WSDL 文件共享策略配置
- 在通过 WS-MetadataExchange GetMetadata 需求获取的 WSDL 文件中共享策略配置。
WS-MetadataExchange
Web 服务使用元数据,例如 WSDL,XML 计划以及 WS-Policy,来描述什么网络客户需要与 Web 服务交流。为了与 Web 服务有效的交流,很重要的一点就是 Web 服务客户获取的数据。WS-MetadataExchange,一种 Web 服务规格,定义了包装 Web 服务元数据的一种标准方法。它还为获取元数据指定了 机理(例如:GetMetdata)。
使用 HTTPGET 请求上的 WS-MetadataExchange 的优势在于,它能安全的与 Web 服务客户共享策略配置。为了得到更多关于 WS-MetadataExchange 的信息,查看 WS-MetadataExchange 说明,它列在 Resources 段落中。
策略集合
策略集合 就是对提供保护 Web 服务质量策略的集合。例如, WebSphere Application Server V7.0 WS-I (RSP Reliable Secure Profile)策略集合(见于 参考资源)由 WS-Security,WS-Addressing,和 WS-ReliableMessaging 策略集合组成。这些策略类型(单独或者联合作用)提供了以下的质量保护:
-
可靠的信息交付性 通过使用 WS-ReliableMessaging,在面对软件,系统或者网络失败时,对预期接收者的可靠的信息交付性 .
-
信息保密性 使用 WS-Security 和 WS-SecureConversation 对信息实体和签名都进行加密以确保信息保密性( WS-Security 的扩展)。
-
信息完整性(确保信息来自合适的发送者,并且在转送过程中没有变更)通过使用 WS-Security 和 WS-SecureConversation 的数字签名来保证信息完整性,这些数字签名包括对信息实体,时间表戳, WS-Addressing 和 WS-ReliableMessaging 报头的签名。WS-Addressing 报头以传输独立的方式,来允许去往 Web 服务信息的统一地址。
WebSphere Application Server V7.0 提供了一系列您可以调整以适应需求的策略集合。本文描述了通过对 Web 服务提供者和客户应用 WS-I RSP 政策集合,来使用 Rational Application Developer V7.5 中的 WS-Policy 支持功能。
WS-Policy 以及不同策略说明的具体信息超出了本文的讨论范围。但是,您可以查看 Resources 以链接到具体的信息。
Web 服务框架的益处(WS-Policy)
WS-Policy 使得 Web 服务客户能够与 Web 服务提供商尽可能有效的交流。程序需要一些信息(比如软件开发者之间的纸质通知和电子邮件)来在特定的条件下相互之间进行交流。考虑一下在没有 WS-Policy 的条件下的以下例子 。
WS-I RSP 策略集合能够保证 Web 服务提供商和客户之间,进行安全和可靠的信息交流。跨国银行的 IT 部门,想要从纽约的全球总部那里建立 Web 服务。由于银行业务传递数据的敏感性,纽约的 Web 服务商想要给 WS-I RSP 策略集合装备上 Web 服务。每一个银行的地区性总部都运行一个 Web 服务,该服务配置成与位于纽约的 Web 服务相交流。
如果纽约的 Web 服务更改为使用不同的策略集合,那么纽约的 Web 服务程序,就必须向每一个它的客户发送一份包含配置信息的通知。但是,如果 Web 服务提供商和客户要使用 WS-Policy 框架,那么他们就不需要通过诸如电子邮件交换这样的手工方式来更改策略配置信息,因为 Web 服务提供商会自动使用 WS-Policy 框架,来共享新的策略配置。
向 JAX-WS Web 服务添加 WS-I RSP 策略集合
前提条件: 为了遵循本文中的范例,您需要安装至少带有 WebSphere V7.0 测试服务器的 Rational Application Developer V7.5。
导入项目
- 从 Download 区下载 simpleProject.zip 文件到您的电脑中。这个文件是包含了一个简易 Web 服务和 Web 服务客户的项目交换文件。
- 通过从主菜单中选择 Programs > IBM Software Delivery Platform > IBM Rational Application Developer 7.5 > IBM Rational Application Developer 来启动 Rational Application Developer。
- 通过点击 File > Import > other > Project Interchange.,将项目导入到 Rational Application Developer ,如图 1,2,3 所示。
图 1. 导入
图 2. 导入项目交换文件
- 在 From zip file 的文本框中,输入您想要导入文件的名字,如图 3 所示。这就是您在第一步中下载的 simpleProject.zip 文件的绝对路径。
图 3. 导入项目对话框
- 点击 Select All 然后点击 Finish。
- 前面的操作会导入含有服务项目和客户项目的 Web 服务,Web 服务客户以及相应的 EAR(企业档案)文件。
部署项目到 WebSphere Application Server V7.0
- 通过右击服务器编辑器中的 WebSphere Application Server V7.0 at localhost 并选择 Start,来启动 WebSphere Application Server V7.0,如图 4 所示。
图 4. 启动服务器
- 通过右击服务器编辑器中的 WebSphere Application Server V7.0 at localhost,并选择 Add and Remove Projects,来添加 Web 服务和 Web 服务客户项目到 WebSphere Application Server V7.0,如图 5 所示。
图 5. 添加并删除项目命令
- 选择 Add All 并点击 Finish,如图 6 所示。这将会在 WebSphere Application Server V7.0 上部署 Web 服务和 Web 服务客户。
图 6. 添加所有的项目
将 WS-I RSP 策略集合联系到 Web 服务提供商
- 点击 Services 项,它在 Enterprise Explorer 项的旁边,如图 7 所示。
图 7. 服务视图
- 右击 JAX-WS ( Java API for XML Web Services)节点下的 HelloWorldService,并选择 Manage Policy Set Attachment ( 图 8)。
图 8. 管理 Policy Set Attachment 命令
- 空白的程序表意味着(如图 9 所示)没有任何策略集合与 simpleWebServiceProjectEAR 程序相联系。点击 Add 按钮,以向 simpleWebServiceProjectEAR 程序中的 Web 服务添加一个策略集合。
图 9. Service Side Policy Set Attachment 视图
- 确保如图 10 所示的设置在您的末端终点对话框中完成:
-
服务名:simpleWebServiceProject.war:{http://test/}HelloWorldService
-
末端:<all endpoints>
-
策略集合:WS-I RSP
-
捆绑:Provider sample
 |
策略结合选项
注意,在本例中,您对 HelloWorldService 的 <all endpoints> 应用 WS-I RSP 策略集合。这也可以轻易的对所有的 HelloWorldService 操作应用 WS-I RSP 策略。但是,您可以从 Policy Set 下拉菜单显示的策略集合的列表中,选择不同的策略集合。而且,您可以选择应用 Web 服务层次,末端层次或者操作层次的策略集合。
|
|
图 10. End Point Definition 对话框窗口
- 点击警告对话框中的 OK 然后点击 Ignore
All。现在 WS-I RSP 策略集合就与 simpleWebServiceProjectEAR 的 HelloWorldService 联系起来,如 Add Policy Set Attachment to Service 页面所示。您在前面选择的设置现在在图表中就可见了,如图 11 所示 。
图 11. Add Policy Set Attachment to Service 对话框
您联系 HelloWorldService 的 WS-I RSP 策略集合,必须与 Web 服务客户共享。您可以按照第 16 步到 20 步的步骤完成这一点。
- 点击 Next 按钮以移动到 Configure Policy Sharing 页面。
- 点击 Configure Policy Sharing 对话框中的 Configure 按钮,如图 12 所示。.
图 12. Service Side Policy Set – Configure Policy Sharing 对话框
- 您将会有两个选项以共享策略配置。对于现在的联系,设置选项为 Share Policy Information via WSDL ( 图 13)。该选项允许服务,以共享通过 HTTP
GET 请求获得的 WSDL 文件中的策略配置。
图 13. Configure Policy Sharing 对话框
- 点击 OK。配置策略共享对话框应该指示 HelloWorldService 在共享策略。
- 点击 Finish。现在您配置 Web 服务提供商,以共享通过 HTTP
GET 请求获得的 WSDL 文件中的策略集合配置 。为了完全的利用 WS-Policy 的特性,您需要使 Web 服务客户能够获取 Web 服务提供商策略集合的配置。您会在第 1 步到第 5 步完成这一点。
获取带有策略配置的 WSDL 文件
- 选择 Enterprise Explorer 项旁边的 Services 项(见于 图 7),然后右击 JAX-WS 节点下的 HelloWorldService 以选择 Show > WSDL Interface,如图 14 所示。Show > WSDL Interface 命令需要通过 HTTP
GET 请求机理的 WSDL 文件,这会在本文的引言部分中进行介绍。
图 14. 显示 WSDL 界面
- 点击 WSDL 编辑器的左下角的 Source 项(见于图 15)。
图 15. WSDL 编辑器 Source 项
策略配置嵌入 WSDL 的 <wsp:Policy> 标签,现在您就可以看到这一点了。
列表 1 显示了包含 <wsp:Policy> 标签的 WSDL 的片段。
列表 1. WSDL 代码中的 <wsp:Policy> 标签
<addressing:Addressing xmlns:addressing="http://www.w3.org/2007/05/addressing/metadata">
lt;wsp:Policy>
<wsp:ExactlyOne>
<wsp:All>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
</addressing:Addressing>
|
将 WS-I RSP 策略集合与 Web 服务客户联系起来
- 切致 Services 视图,右击客户节点下的 HelloWorldService 客户,然后点击 Manage Policy Set Attachment。
图 16. Services 视图
- 强调 <all services> 然后选择 Use Provider Policy,如图 17 所示。强调 <all services> 可以确保 simpleWebClientEAR 中的服务客户,会得到配置以获取提供商策略。
 |
获取策略集合的两种方式
您可以选择获取提供商的策略配置(如第 2 步所示),或者为您的客户选择一个可选的策略配置。对于这个例子(并从提供商策略共享特征中获利),您可以选择配置客户,这样就可以与 Web 服务提供商对策略集合的选择保持一致。这通过前面的第 2 步得到完成。 |
|
图 17. Configure Policy Acquisition for Web Service Client 对话框
- 因为您配置了 Web 服务提供商,以共享通过 HTTP
GET 请求获取的 WSDL 文件中的策略配置,所以相应的 Web 服务客户必须配置成使用 HTTPGET 请求,以接受包含来自提供商策略配置的 WSDL。因此,选择 HTTP Get request targeted at,如图 18 所示。
图 18. Configure Provider Policy Acquisition 对话框
- 点击 OK。
- 点击 Finish。现在您配置了 Web 服务以获取来自 Web 服务提供商的策略配置。
检查策略控制文件。
- 在 Enterprise Explorer 项中,展开 simpleWebServiceProjectEAR > META-INF 和 simpleWebClientEAR > META-INF。
- 双击图 19 中强调的文件(
wsPolicyServiceControl.xml 和 wsPolicyClientControl.xml)。
图 19. Policy Client Control 和 Policy Service Control 文件
文件 wsPolicyServiceControl.xml 显示策略配置将会共享通过 HTTPGET 请求获取的 WSDL,如以下的标签对所示:
<ExportPolicySetConfigurationInWSDL>true</ExportPolicySetConfigurationInWSDL> |
文件 wsPolicyClientControl.xml 显示策略配置将会通过使用 HTTPGET 请求来获取 WSDL,如下面的两个标签对所示:
<ProviderPolicyAcquisition>
<PolicyAcquisitionClass>com.ibm.ws.wspolicy.acquisition.
AcquireViaQWSDL</PolicyAcquisitionClass>
</ProviderPolicyAcquisition>
|
现在您已经知道了怎样使用 Rational Application Developer 中的功能,通过使用 WS-Policy 框架来配置 WebSphere Application Server V7.0 策略集合。
致谢
作者感谢 Yen Lu 和 Zina Mostafia 对本文所做的杰出贡献。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| 示例项目 | simpleProject.zip | 51KB | HTTP |
|---|
参考资料 学习
获得产品和技术
讨论
关于作者  | 
|  | Rakan Khalid 是 IBM 软件部的一名 Cognos 解决方案架构师。 Rakan 持有约克大学的计算机科学学士学位,一等奖学金。 他曾工作过的 IBM 软件产品范围很广泛,包括 DB2 数据库管理系统,WebSphere Application Server,以及作为 Web 服务功能测试领先者的 Rational Application Developer。 目前他是一名 Cognos 解决方案架构师,负责规划和构建有竞争力的技术和业务解决方案,在商业智能软件领域赢得客户。 |
对本文的评价
|