构建SOA组合业务服务,第2部分2011-04-08 IBM Javier Garcia, Qiang Wang第2部分: 将业务集成项目从WebSphere Application Developer-IE v5.1迁移到WebSphere Integration Developer v6.0.1本文是一个考虑开发组合应用程序的系列的一部分。组合应用程序集成现有的SOA服务并 创建能够以不同的方式组合的新服务。我们最初使用WebSphere Application Developer IE v5.1开发了一个演示组合应用程序,其中使用了WebSphere Business Integration SF作为其 运行时(请参见本系列的第1部分)。随着WebSphere Process Server v6及其对应的开发工具 WebSphere Integration Developer v6的发布,一种基于服务组件体系结构(Service Component Architecture,SCA)的新编程模型出现了,从而要求将构件从遗留编程模型迁移 到新的编程模型。下面我们将与您分享在此迁移过程期间学习到的一些重要教训。引言本文描述将原型组合应用程序从WebSphere Application Developer-IE v5.1迁移到 WebSphere Integration Developer v6的一些问题和解决方案。我们将介绍的主要问题包括 WSDL绑定、WSDL接口、XSD定义和业务流程执行语言(Business Process execution Language ,BPEL)编码。尽管WebSphere Integration Developer v6具有功能强大的迁移向导,但我们 发现可以对简单项目进行自动迁移。然而,更复杂的BPEL应用程序将需要对迁移过程的更深 入了解。有关详尽的迁移注意事项,请参考WebSphere Integration Developer帮助或 WebSphere Integration Developer/WPS信息中心。绑定的迁移问题本系列中的第一篇文章确定了一些由一家银行客户发起的用例。“贷款申请”用例调用了 一个BPEL业务流程。该业务流程完成一系列调用服务来处理贷款的步骤。所调用的有些服务 使用了Java或EJB绑定。Java绑定问题WebSphere Integration Developer v6不支持WebSphere Application Developer-IE所生 成的WSDL中使用的原始Java绑定类型。服务/端口定义使用了某种Java类型。因此在WSDL中生 成了一个Java ClassName而不是一个端点地址。(请参见清单1)。清单1. 带Java绑定的WSDL
<service name="LoanTrackingServiceProxyPortTypeService">
<port binding="tns:LoanTrackingServiceProxyPortTypeJavaBinding"
name="LoanTrackingServiceProxyPortTypeJavaPort">
<java:address className="loantrackingservice.LoanTrackingServiceProxy"/>
</port>
</service>
如果将此类WSDL直接导入SCA模块,那么即使没有异常或由WebSphere Integration Developer标记的错误,所生成的导入也无法成功进行绑定(请参见图1)。事实上,WebSphere Integration Developer V6仅支持带SOAP绑定的Web服务导入。因此,导入的端点将保留为空 ,从而在将模块部署到WPS并在我们尝试调用它时导致运行时异常。

图1. 带Java绑定的WSDL导入