级别: 初级 张 婕 (zjiebj@cn.ibm.com), 软件工程师, IBM 中国软件开发中心 于 秀宾 (xbyu@cn.ibm.com), 软件工程师, IBM 中国软件开发中心 郝 志丹 (haozd@cn.ibm.com), 软件工程师, IBM 中国软件开发中心
2009 年 3 月 26 日 本文将介绍 WebSphere® Process Server(WPS)V6.2 和 WebSphere® Integration Developer(WID)V6.2 对于服务组件架构(Service Component Architecture,以下简称 SCA)模块的 JAX-WS 绑定的支持,并结合实际的例子,讲述如何使用 WID 和 WPS 开发和配置基于 JAX-WS 绑定的 SCA 模块,如何通过管理控制台给 JAX-WS 绑定连接、拆离策略集(Policy set)或指定策略集绑定。 本文对于想了解 WPS V6.2 和 WID V6.2 新特性及准备采用 JAX-WS 绑定的软件开发和部署管理人员有一定的帮助。
引言
JAX-WS 的全称为 Java API for XML-Based Web services(JAX-WS),是面向 Java 5 的开发 Web services 的最新编程标准。它提供了新的编程模型,对以往的 JAX-RPC 方式的 Web services 进行了增强。WID 和 WPS 在最新的 V6.2 中分别加入了对 SCA Module 之间基于 JAX-WS 2.0 绑定的支持。本文结合 WID 和 WPS 讲述基于 JAX-WS 绑定的 SCA Module 开发及配置的过程,同时介绍 JAX-WS 2.0 相关的一些重要的策略集以及通过 WPS 管理控制台进行连接、拆离策略集的过程。本文对于想了解 WPS V6.2 和 WID V6.2 新特性及准备采用 JAX-WS 绑定的软件开发和部署管理人员有一定的帮助。
JAX-WS 2.0 相关策略及策略集概述
策略集是有关如何定义服务的断言。JAX-WS 通过使用相关的 Web Service 策略集来简化 Web Service 服务质量(QOS)配置。策略集组合了一定的策略,其中包括用于传输和消息级别配置的策略,例如:WS-Addressing、WS-Reliable Messaging、HTTP transport、SSL transport 以及 WS-Security。
Web Service 策略介绍
WPS V6.2 提供的策略包括:
WS-Addressing 是一项万维网联盟规范,它通过定义用于确定 Web Service 地址的标准方法并在消息中提供寻址信息来帮助实现 Web Service 之间的相互操作。此规范提供了与传输无关的机制来对 Web Service 进行寻址,并提供异步支持。
此标准在各组织之间提供一个框架,该框架定义如何保护整个对话。WS-Security 策略可用于定义如何保护 SOAP 消息。
-
WS-Reliable Messaging(WS-RM)
WS-RM 是为支持 Web Service 之间更可靠的消息交换而引入的规范。此规范使发送方和接收方能够保证一组消息中的服务质量。它对于有状态应用程序相当重要。
HTTP 传输策略将 HTTP 功能部件和 HTTP 连接策略应用于出站消息。对入站消息强制执行响应侦听器策略。
为 Web Service 应用程序的 HTTP 协议提供 SSL 传输安全性。
Web Service 策略集介绍
策略集的实例由一组策略组成。策略集由在单元之间唯一的名称标识。空策略集是未定义任何策略实例的策略集。
WPS V6.2 中提供了 16 种缺省的策略集,主要的策略集有 LTPA RAMP default、SSL WSTransaction、WSReliableMessaging default、WSSecurity default、WSTransaction 等等。WAS 信息中心 提供了对于这些策略集的详细说明。
除了缺省的策略集,用户还可以根据需要来创建并维护自己的应用程序策略集。对策略集可执行以下操作:
-
创建
-
编辑
-
删除
-
连接至服务资源(如应用程序)
-
从服务资源(如应用程序)中拆离
-
导出
注意: 缺省策略集是只读的,不能编辑、删除。另外请注意,只能使用管理控制台或管理命令复制和定制策略集。如果手动复制策略集,那么它们不能正常工作。
在应用程序服务器上,策略集都存储在单元级别,因此它们可用于服务器上的所有应用程序。策略集不包括特定于环境或平台的信息(例如用于签署的密钥)、密钥库信息或持久存储信息,此类型的信息在策略集绑定中定义。
策略集和策略集绑定是两种不同的概念:
-
策略集是一系列策略类型组合,策略集通过其组合的各种策略类型来定义该策略集需要做什么;
-
策略集绑定则是定义了如何来在服务器上实现这个策略。策略集绑定包含特定于平台的信息,例如,策略集连接所需的密钥库、认证信息或持久信息。如对于 HTTP Transport 策略,需要设置用于服务请求,响应的代理和认证信息;对于 WS-ReliableMessaging 策略,需要选择用于可靠消息传递的服务集成总线和消息传递引擎。
策略集需要结合必要的策略集绑定才能够使用,如果不单独设置策略集绑定,则会使用系统缺省的策略集绑定,缺省策略集绑定可以通过管理控制台页面,服务 -> 策略集 -> 缺省策略集绑定来查看和设置具体的实现参数。
WPS 及 WID 中新增 SCA Module JAX-WS 绑定功能
WebSphere Application Server (WAS) V6.1 Web Services 功能部件包支持异步、可靠、安全地发送 Web Service 消息。它着重于与其他供应商的互操作性和提供对“针对 XML Web Service 的 Java API”(JAX-WS)2.0 编程模型的支持。WPS V6.2 和 WID V6.2 将 WAS Web Services 功能部件包无缝的整合进来,无需对其单独安装,其功能在每一个 WPS V6.2 服务器上都可以使用,对于从以前版本上迁移到 V6.2 的服务器,此项功能也被自动加入进来。
如图1所示,Web Services 绑定提供了 SCA Module 和以 Web Services SOAP/HTTP 或者SOAP/JMS 作为传输协议的外部服务之间的连通性。在 WPS V6.1.2 及以前的版本中仅支持基于 JAX-RPC 协议的 Web Services 绑定,而在 WPS V6.2 中,除了继续兼容 JAX-RPC 之外,通过 WAS Web service 功能部件包,Web service 绑定提供了对 JAX-WS Web Services 的全面支持。
图 1. Web Services 绑定
WPS V6.2 对所有 WAS Web service 功能部件包的策略集都支持。用户可以使用系统已有的策略集,也可以自定义策略集。可以通过管理控制台对基于 JAX-WS 的 Web service 绑定连接、拆离策略集、或指定策略集绑定。
JAX-WS 绑定应用
应用场景以及系统需求概述
我们先介绍一个 JAX-WS 绑定应用场景,然后以这个应用场景为例,详细介绍其开发及进行策略集连接的过程。在这个应用场景中,应用程序 JAXWSApp 有一个 HelloJAX 组件,组件提供两种处理操作 operation1 和 operation2 。这个组件被导出(Export)为一个 Web service(JAX-WS类型) 服务,可以通过 Web service 访问来获取这个服务。另外,我们还有一个客户应用程序 JAXWSClientApp,此客户应用程序通过导入(Import)调用 Web service 服务来访问处理服务,如图2所示:
图 2. 应用场景
在实现这个应用场景之前,需要安装两个产品:
-
WebSphere Process Server(WPS) V6.2
-
WebSphere Integration Developer(WID) V6.2
使用 WID 开发 SCA Module JAX-WS 绑定
该场景包含两个应用,一个发布 Web Service 的服务器端(Server),一个使用 Web Service 的客户端(Client)。下面我们分步介绍具体的生成配置过程。
JAX-WS导出(Export)的生成与配置:
1. Server 端我们使用一个 JAX-WS 的 Export,在应用的组装图中右键选择我们要向外提供Export 的组件(Component),此例中为 HelloJAX。在弹出菜单中选择生成导出(Generate Export)-〉网络服务绑定(Web Service Binding),如图 3:
图 3. 生成导出
2. 图4显示出的可供选择的 Web Service Binding,我们可以看到共有四个选项:SOAP1.2/HTTP, SOAP1.1/HTTP, 以及使用 JAX-RPC 的 SOAP1.1/HTTP 和 SOAP1.1/JMS,其中后两种类型是对过去版本的支持,此处我们选择 SOAP1.2/HTTP。如图 4:
图 4. 导出 Web service 类型
3. 点击确定,图中会自动出现该 Export。打开对应的属性视图(Properties),在视图左侧选择“绑定 (Binding) ”,我们会发现 SOAP1.2/HTTP 属性在其中显示,而且生成了默认的地址、端口、服务与命名空间。如图 5:
图 5. 导出属性
4. 在配置相关的 Web Service 端口的目录下,我们会发现,相关的端口文件已经创建:
图 6. 导出端口文件
5. 我们可以在 Properties 视图,Binding tab 下的“Policy Set”配置我们服务级(Service)的策略集,如图 7 所示。也可以在应用部署在 WPS 服务器上后,为服务与服务中的每个方法配置策略集。
图 7. 缺省策略集
JAX-WS 导入(Import)的生成与配置:
1. 对于上面 Web Service 应用提供的 Export,我们在客户端需要用 JAX-Web Service 的Import 来调用。首先要将上面提到的端口文件 JAXIntExport1_JAXIntHttpPort 导入或复制到Client 对应的目录或者使用的 Library 下。然后我们在装配图上创建一个 import,添加对应的接口,并选择生成 Web Service 的 Import Binding。如图 8 所示:
图 8. 生成导入
2. 我们会得到一个选择页面,如图 9 所示:
图 9. 导入配置
3. 我们可以选择一个已有的 Web Service 端口配置文件,也可以在以后指定,这里我们点击“Browse”在打开窗口中选择上面生成的端口文件,如图 10 所示:
图 10. 选择端口
4. 点击“OK”,WID 会给出提示匹配的对应 Web Service 类型,如图 11 所示:
图 11. Web service 类型
5. 点击“OK”,我们就得到了对应的 Import Binding,我们可以在和 Export 同样的位置上为它设置对应的策略集。
至此,JAX-Web Service Binding 在 WID 中的应用就设置完成了。保存并导出上面的应用,进入下一部分的介绍,完成后续策略集的配置。
使用 WPS 管理控制台部署和配置策略集
将 Server 与 Client 端的应用部署在 WPS 上,我们可以从 SCA Module 对应的 binding页面上看到并修改我们对 Policy Set 在 Service 层连接的策略集,并在此处为每个服务中的方法连接策略集和指定绑定(Assign Binding)。此例中,Export Binding 的路径为 SCA modules -> JAXWS -> JAXIntExport1_JAXIntHttpService。
添加和修改策略集连接:
1. 我们首先在前面的选项框中选择我们要添加或者修改的对象,此处我们选择对应的Service:JAXIntExport1_JAXIntHttpService。
图 12. 配置部署策略集
2. 我们点击连接(Attach)键,会看到所有的可选策略集,此处我们选择“WSReliableMessaging default“。
图 13. 选择策略集
3. 我们会看到连接的策略集(Attached Policy Set)变为我们所选的选项,并显示为链接,如图 14。点击该 Policy Set 的链接,我们可以看到它由哪些具体的 Policy 组成,如图 15 所示:
图 14. 连接好策略集
图 15. 策略集组成
Figure xxx. Requires a heading
为连接了 Policy Set 的对象指定绑定(Assign Binding):
1. 与上面相同,首先在前面的选项框中选择要添加或者修改的对象,此处我们仍选择对应的 Service: JAXIntExport1_JAXIntHttpService。注意,只有连接了策略集的对象才可以指定策略集绑定,否则会提示异常。
2. 点击 Assign Binding 键,我们会看到“新建(new)”、“默认(default)”和所有已经建立的绑定名。此处我们选择 “new”。
图 16. 指定策略集绑定
3. 在绑定配置名称(Bindings configuration name)的文本框中添加自己的绑定名称,这里我们的名称为 “BindingJAXWS”,单击添加 “Add” 键,Policy set 支持的 Policy 就会显示出来:
图 17. 新建策略集绑定
4. 选择 WS-ReliableMessaging,则发现它被添加到表格中并显示为一个链接,此处我们点击该链接,配置对应的绑定信息。选择用来发送可靠消息(ReliableMessaging)的总线(Bus)与该总线上的消息引擎(Message Engine),这里选择最常用的 SCA Application Bus,选择后结果如图 18 所示:
图 18. 配置策略集绑定
对于其他不同的 Policy,我们需要配置不同的值,其中 WS-Addressing 不需要再配置。
5. 如上选择并配置完成了一个 Policy 后,我们还可以在此处继续添加配置其他的 Policy。策略集配置完成后点击页面上方的保存 (save) 返回绑定页面。至此,我们完成了对该服务的策略集配置。该服务包含的两个方法(operation1, operation2)都默认从该服务继承了对应的配置信息,如图 19 所示:
图 19. 指定好策略集绑定
上面我们配置了 Web service 绑定的策略集与及其指定的策略集绑定,重启应用后,就可以在消息传输中使用这些配置了。
Import 的配置过程与上面 Export 的过程完全一致。入口为:SCA modules -> JAXWSClient -> JAXIntExport1_JAXIntHttpService,在两边都配置完成后,就可以测试之间的消息传输了。
使用 wsadmin 脚本工具部署和配置策略集
除了通过管理控制台配置策略集以外,对于熟悉 wsadmin 的用户也可以直接通过命令来进行配置。wsadmin 工具支持 Jython 和 Jacl 两种脚本语言,下面我们以 Jython 脚本为例,详细介绍如何通过 wsadmin 来为 SCA module 的 Web service 绑定配置策略集。
1. 启动服务器,安装应用程序 JAXWSClientApp。
2. 启动 wsadmin 脚本工具。在 ${USER_INSTALL_ROOT}\profiles\profile_name\bin 目录下执行 wsadmin。
图 20. 启动wsamdin
3. 调用 AdminTask 的命令 showSCAImportWSBinding/showSCAExportWSBinding 查看特定导入/导出绑定的详细信息,使用时指定 module 的名字和相应导入/导出的名字。
图 21. 查看导入/导出绑定
上图中,红色框就是使用的命令以及参数,红色框下面的是执行命令后的结果。从结果中我们可以看到各种详细信息(见蓝色框),这里有 service 信息,port 信息,endpoint 信息,binding type 信息以及 policyAttachments(策略连接)信息。通过 policyAttachments (策略连接)信息我们可以知道在这个导入的 Web service 绑定中,有哪些资源可以连接策略集信息,上图的策略连接信息就是以数组表现如下:
-
{resource=WebService:/JAXWSClientWeb.war:{http://JAXLib/JAXInt/Binding}JAXIntExport1_JAXIntHttpService}
-
{resource=WebService:/JAXWSClientWeb.war:{http://JAXLib/JAXInt/Binding}JAXIntExport1_JAXIntHttpService/JAXIntExport1_JAXIntHttpPort/operation1}
-
{resource=WebService:/JAXWSClientWeb.war:{http://JAXLib/JAXInt/Binding}JAXIntExport1_JAXIntHttpService/JAXIntExport1_JAXIntHttpPort/operation2}
4. 调用 AdminTask 的命令 createPolicySetAttachment 给第 3 步列出的资源连接策略集,以给 operation1 连接策略集 "WSHTTPS default" 为例:
图 22. 创建策略集连接
在运行此命令时,参数中需要指定应用程序的名字,策略集的名字, -resources 参数值是第 3 部分列出的资源的全称, -attachmentType 参数值则是 “application” (针对导出) 或者“client”(针对导入)。命令执行完后,下方的返回值‘1630’则是策略集连接的 ID。
5. 调用 AdminTask 的命令 setBinding 指定策略集绑定,指定应用程序名和在第 4 步返回的策略集连接 ID。
图 23. 指定策略集绑定
6. 调用 AdminTask 的命令 deletePolicySetAttachment 给特定资源拆离策略集。
图 24. 删除策略集连接
7. 为了让每一步的执行结果生效,请在执行完命令后调用 AdminConfig.save() 来保存修改。
结束语
本文向您讲述了 JAX-WS 2.0 相关的策略、策略集及策略集绑定,并通过示例展示了基于JAX-WS 绑定的 SCA 应用的开发、部署及配置过程。通过本文,您可以对 JAX-WS 2.0 及其策略集、策略集绑定有一个初步的了解,并懂得如何通过 WebSphere 提供的工具开发简单的符合 JAX-WS 2.0 的 SCA 应用以及如何通过 WPS 控制台进行部署和配置。
参考资料
作者简介  | |  | 张婕:IBM CDL 软件工程师(Software Engineer)。自 2007 年起一直在 IBM 从事 Websphere Process Server(WPS) 的开发工作,对 Websphere Process Server(WPS) 和 WebSphere Integration Developer(WID) 具有丰富的实践经验。 |
 | |  | 于秀宾:IBM CDL 软件工程师(Software Engineer)。现在 IBM Websphere 部门从事软件开发工作,具有丰富的 Websphere Process Server(WPS) 和 WebSphere Integration Developer (WID)实践经验。 |
 | |  | 郝志丹:IBM CDL 软件工程师(Software Engineer)。自 2007 年起一直在 IBM 从事软件测试的工作,对 Websphere Process Server(WPS) 和 WebSphere Integration Developer(WID) 具有丰富的实践经验。 |
对本文的评价
|