使用服务组件体系结构构建SOA解决方案(二)

日期: 2008-08-06 作者:Roland BarciaJeff Brent 来源:TechTarget中国 英文

  虽然我们为组件定义了一个WSDL接口,但是请注意,我们能够将另一个Java接口添加到独立引用,并将其连接到我们的目标组件。通过这种方式,Java客户机可以使用一个简单的POJI调用SCA组件。WebSphere Integration Developer将提供在Java接口和WSDL接口之间转换调用的选项。在创建了第一个SCA组件后,您将很快看到这样一个示例。


  在这一系列文章中,我们将看到SCDL如何定义其他SCA构件(如服务引用、导入和导出)的示例。WebSphere Integration Developer 使用上述SCDL文件的命名约定,实际情况就是如此。在我们的示例中,在构建第一个SCA组件时,您将使用WebSphere Integration Developer。然而,SCA应用程序也可以使用记事本进行构建。


  WebSphere Integration Developer和WebSphere Process Server


  在本文中,您将使用WebSphere Integration Developer和WebSphere Process Server来构建并运行SCA组件。


  WebSphere Integration Developer用于开发运行于WebSphere Process Server V6上的应用程序。WebSphere Integration Developer基于Eclipse 3.0平台,它为集成项目提供了基于角色的开发。您可以将WebSphere Integration Developer和IBM WebSphere Business Modeler V6与IBM Rational? Application Developer V6或IBM Rational Software Architect V6一起作为集成开发平台。J2EE开发人员、业务分析人员或集成开发人员可以使用基于其独特角色的工具透视图,这样每个开发人员都可以将注意力集中在这些角色所需的编辑器和工具上,从而大大提高了工作效率。


  WebSphere Process Server是一个基于WebSphere Application Server V6的综合集成平台。WebSphere Process Server用于在面向服务的体系结构中执行基于组件的业务集成应用程序。由于它基于WebSphere Application Server提供的J2EE 1.4基础结构和平台服务,因此WebSphere Process Server包括诸如业务流程自动化之类的功能。


  构建第一个SCA项目


  现在,您可以构建第一个SCA项目了。在本例中,您将构建一个简单的信用审批组件。该组件接收一个具有ID和名称的数据对象,然后返回另一个包含信用分数和信用额度的数据对象。下载本文所附的zip文件,并将其解压缩到硬盘上。本指导假设您将zip文件解压缩到C:盘上。


  WebSphere Integration Developer V6.0是一个灵活的开发环境,它为自底向上或自顶向下开发SCA应用程序提供了工具和向导。


  为了创建信用审批服务,我们将研究自顶向下开发的各个方面。自顶向下开发过程的一般步骤大致如下:


  ·创建SCA模块。
  ·创建业务对象。
  ·定义服务接口。
  ·生成组件并提供实现。
  ·对SCA组件进行单元测试。
  ·提供独立引用。
  ·使用简单的JSP客户机测试服务。


  创建SCA模块


  首先,您需要创建一个SCA模块。如前所述,SCA模块是SCA组件的打包构造。


  在WebSphere Integration Developer中打开一个空白工作区。(图9)



  图9. 在WebSphere Integration Developer中打开一个空白工作区
 
  关闭Welcome屏幕。


  接下来,您需要创建一个新模块。


  在WebSphere Integration Developer工作台中,打开业务集成透视图。找到Business Integration视图。


  在Business Integration视图内单击鼠标右键,然后选择New=>Module。(图10)



  图10. 创建新模块
 
  New Module向导应该出现(图11)。将该模块命名为CreditApprovalSCAModule。



  图11. 创建新模块
 
  现在,Business Integration视图中应该显示一个新项目。SCA模块是作为SCDL文件描述的。Business Integration视图向您展示了SCA模块的逻辑视图。如前所述,您可以打开Physical Resource视图,来查看包含在SCA模块中的物理资源。SCA模块的SCDL包含在名为sca.module的文件中。如果您使用文本编辑器打开该文件,应该看到以下内容:


  清单8
    
  <?xml version=”1.0″ encoding=”UTF-8″?>
  <scdl:module      name=”CreditApprovalSCAModule”/>
 
  创建业务对象


  对于创建接口或业务对象,没有预先定义的任务顺序;只需要在创建接口时简单地创建业务对象即可。这里我们选择在Business Integration视图中创建业务对象。


  在创建业务对象时,实际上您正在创建XML模式。业务对象作为标准的XML模式进行存储。应用程序可以使用SDO编程模型和XPath访问数据。


  通过业务对象编辑器,我们可以创建信用审批服务将使用的业务对象定义。我们的服务需要两个业务对象。


  CreditApplication:包含计算信用等级所需的信用申请者的有关信息。信用应用程序业务对象(CreditApplication)包含三个属性:


  ·Customer Id:客户的唯一标识符
  ·First Name:客户的名字
  ·Last Name:客户的姓氏


  CreditRating:包含信用等级信息,如信用分数和信用额度。信用等级业务对象(CreditRating)包含三个属性:


  ·Credit Score:客户基于先前历史记录的信用分数
  ·Credit Limit:客户可借贷的总金额。


  我们首先创建请求业务对象,它用作SCA组件的输入参数。


  请确保CreditApprovalSCAModule已展开。右键单击Data Types,然后选择New=>Business Object。(图12)



  图12. 创建新业务对象
 
  将业务对象命名为CreditApplication,如图13所示。



  图13. 定义业务对象
 
  该业务对象应该在业务对象编辑器中打开。现在,Data Types菜单下应该有CreditApplication。(图14)



  图14. 业务集成菜单
 
  现在,我们将定义CreditApplication业务对象的属性。


  您可以通过选择Add Attribute图标添加属性,如图15所示。



  图15. Add Attribute图标
 
  输入customerId作为属性名称,并接受缺省的String类型。(要更改类型,您只需选择类型字段,并从下拉框中选择类型。您需要为响应对象进行此操作。)



  图16. 定义属性
 
  再添加两个String属性,并将其命名为firstName和lastName。这两个属性应该是字符串类型,如下所示。



  图17. 定义属性
 
  该业务对象是使用标准的XML模式类型定义的。您可以使用XML编辑器打开该业务对象,以便进行查看。(通过右键单击业务对象并选择Open with=>和您选择的编辑器,您可以在文本编辑器中打开该业务对象。)


  保存并关闭业务对象编辑器。



  图18. 定义的业务对象
 
  XML模式应该类似于下面的代码示例。


  清单9
        
  <?xml version=”1.0″ encoding=”UTF-8″?>
  <xsd:schema
  targetNamespace=”http://CreditApprovalSCAModule”>
    <xsd:complexType name=”CreditApplication”>
      <xsd:sequence>
        <xsd:element minOccurs=”0″ name=”customerId” type=”xsd:string”/>
        <xsd:element minOccurs=”0″ name=”firstName” type=”xsd:string”/>
        <xsd:element minOccurs=”0″ name=”lastName” type=”xsd:string”/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:schema>
 
  现在,我们要创建第二个业务对象来表示响应。


  按照上面同样的步骤,创建另一个业务对象。该业务对象有三个字段:


  ·字符串类型的customerId
  ·整数类型的creditScore
  ·双精度类型的creditLimit


  如前所述,您可以通过选择类型列更改类型,如图19所示。



  图19. 更改属性类型
 
  保存并关闭业务对象编辑器


  现在,您已经创建了两个业务对象。


  定义服务接口


  现在,您可以创建SCA接口了。此外,信用审批服务是一个请求-响应服务,它接收信用应用程序并同时返回信用等级。服务接口定义服务客户机和服务提供者之间的交互。


  有多种创建接口的方式。如果您选择Java接口,可以使用WebSphere Integration Developer中的Java Eclipse工具来进行创建。在我们的示例中,我们将在业务集成透视图中创建WSDL接口。您可以使用Assembly Editor创建,也可以使用业务集成视图创建。我们将使用后者。(稍后,我们将使用Assembly Editor创建实现。)


  首先,我们将使用Business Integration视图菜单创建接口。


  右键单击Interfaces菜单项,然后选择New=>Interfaces,如图20所示。



  图20. 创建新接口
 
  在New Interface菜单中,输入名称CreditApproval。(请记住出于演示的目的,在我们的示例中,我们使用的是缺省包和文件夹。您可以选择一个文件夹,轻松地按功能对不同的接口进行分组。)



  图21. 创建新接口
 
  CreditApproval接口是一个简单的WSDL文件。WebSphere Integration Developer附带了一个简单的WSDL编辑器,可以用来构建接口。


  在创建接口时,接口编辑器应该已经打开。如果接口编辑器尚未打开,可以在业务集成视图中双击接口,以将接口编辑器打开。


  首先,我们要创建一个简单的请求-响应操作。(您还可以创建用于异步调用的单向操作,但是现在,我们只创建简单的同步请求。)单击Add Request Response Operation图标,如图22所示。



  图22. Add Request Response Operation图标
 
  将在编辑器中创建一个操作。将该操作命名为 calculateCreditRating。(图 23)



  图 23. 定义操作
 
  现在我们需要定义参数。请记住,我们创建了两个业务对象,一个用于输入,另一个用于输出。在创建操作后,选择Add Input图标,如图24所示。



  图24. Add Input图标
 
  将输入命名为CreditApplication。


  选择Type列并找到CreditApplicaiton业务对象。您可以看到,业务对象现在是一个有效类型,可以用于构建接口,如图25所示。(在这里你可以选择创建新业务对象。)



  图25. 新业务对象现在是一个有效类型
 
  接下来,选择Add Output图标,如图26所示。



  图26. Add Output图标
 
  选择CreditRating作为类型,类似于选择输入的类型。



  图27. 定义输出
 
  保存并关闭接口编辑器。


  如果您希望检查WSDL文件,可以在Physical Resources视图中右键单击CreditApproval.wsdl文件,然后使用文本编辑器打开该文件。(图28)



  图28. 查看WSDL文件
 
  WSDL文件应该类似于下面的代码示例。


  清单10
        
  <?xml version=”1.0″ encoding=”UTF-8″?>
  <wsdl:definitions
  
     
  name=”CreditApproval”   targetNamespace=”http://CreditApprovalSCAModule/CreditApproval”>
    <wsdl:types>
      <xsd:schema   targetNamespace=”http://CreditApprovalSCAModule/CreditApproval”
  
  
  >
        <xsd:import namespace=”http://CreditApprovalSCAModule”
  schemaLocation=”xsd-includes/http.CreditApprovalSCAModule.xsd”/>
        <xsd:element name=”calculateCreditRating”>
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name=”CreditApplication” nillable=”true”
  type=”bons1:CreditApplication”/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name=”calculateCreditRatingResponse”>
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name=”CreditRating” nillable=”true”
  type=”bons1:CreditRating”/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
    </wsdl:types>
      <wsdl:message name=”calculateCreditRatingRequestMsg”>
      <wsdl:part element=”tns:calculateCreditRating”
  name=”calculateCreditRatingParameters”/>
    </wsdl:message>
      <wsdl:message name=”calculateCreditRatingResponseMsg”>
      <wsdl:part element=”tns:calculateCreditRatingResponse”
  name=”calculateCreditRatingResult”/>
    </wsdl:message>
      <wsdl:portType name=”CreditApproval”>
      <wsdl:operation name=”calculateCreditRating”>
        <wsdl:input message=”tns:calculateCreditRatingRequestMsg”
  name=”calculateCreditRatingRequest”/>
        <wsdl:output message=”tns:calculateCreditRatingResponseMsg”
  name=”calculateCreditRatingResponse”/>
      </wsdl:operation>
    </wsdl:portType>
  </wsdl:definitions>

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 谁知道阿里云河南服务中心是干什么的?

    一直接到阿里云服务中心的电话,说是阿里云的授权中心,主要提供阿里云的区域服务的?请问其他地方也有阿里云的服务中 […]

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。