IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere | SOA and Web services  >

利用 WID 及 WPS V6.2 开发基于 JAX-WS 绑定的 SCA 应用

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

张 婕 (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

WS-Addressing 是一项万维网联盟规范,它通过定义用于确定 Web Service 地址的标准方法并在消息中提供寻址信息来帮助实现 Web Service 之间的相互操作。此规范提供了与传输无关的机制来对 Web Service 进行寻址,并提供异步支持。

  • WS-Security

此标准在各组织之间提供一个框架,该框架定义如何保护整个对话。WS-Security 策略可用于定义如何保护 SOAP 消息。

  • WS-Reliable Messaging(WS-RM)

WS-RM 是为支持 Web Service 之间更可靠的消息交换而引入的规范。此规范使发送方和接收方能够保证一组消息中的服务质量。它对于有状态应用程序相当重要。

  • HTTP transport

HTTP 传输策略将 HTTP 功能部件和 HTTP 连接策略应用于出站消息。对入站消息强制执行响应侦听器策略。

  • SSL transport

为 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) 具有丰富的实践经验。




对本文的评价








IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款