构建SOA组合业务服务
本文是一个考虑开发组合应用程序的系列的一部分。组合应用程序集成现有的SOA服务并创建能够以不同的方式组合的新服务。我们最初使用WebSphere Application Developer IE v5.1开发了一个演示组合应用程序,其中使用了WebSphere Business Integration SF作为其运行时。随着WebSphere Process Server v6及其对应的开发工具WebSphere Integration Developer v6的发布,一种基于服务组件体系结构(SCA)的新编程模型出现了,从而要求将构件从遗留编程模型迁移到新的编程模型。下面我们将与您分享在此迁移过程期间学习到的一些重要教训。
本文是一个考虑开发组合应用程序的系列的一部分。组合应用程序集成现有的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
name="LoanTrackingServiceProxyPortTypeJavaPort">
如果将此类WSDL直接导入SCA模块,那么即使没有异常或由WebSphere Integration Developer标记的错误,所生成的导入也无法成功进行绑定(请参见图1)。事实上,WebSphere Integration Developer V6仅支持带SOAP绑定的Web服务导入。因此,导入的端点将保留为空,从而在将模块部署到WPS并在我们尝试调用它时导致运行时异常。

图1. 带Java绑定的WSDL导入
Enterprise JavaBean(EJB)绑定问题
WebSphere Integration Developer v6不支持WebSphere Application Developer-IE所生成的WSDL中使用的原始EJB绑定类型。其中的服务/端口定义(类似于前面提到的Java类型)使用了EJB类型。因此,提供了EJB Home ClassName和JNDI Name而不是端点地址。(请参见清单2)。
清单2. 带EJB绑定的WSDL
name="LoanTrackingServiceEJBPort"> jndiName="ejb/loantrackingservice/LoanTrackingServiceHome"/> |


