通过导入和导出集成SCA模块(三)

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

  生成实现


  我们现在将为CreditApproval组件创建一个实现。在我们的示例中,将使用一个简单的Java组件。


  在Assembly Editor中,右键单击CreditApproval组件,并选择Generate Implementation=>Java。



  图39. 生成Java实现
 
  暂时将该类放在缺省包中(图40)。



  图40. 缺省包
 
  如果希望在稍后添加本地Java客户机,请在Implement As…对话框中选择Yes,以创建一个匹配的Java接口(图41)。



  图41. 为本地Java客户机创建Java接口
 
  现在我们将编写实现的代码。


  应在Java编辑器中打开实现类。正如您在Java编辑器中看到的,WebSphere Integration Developer添加了方便的Helper,以通过检查模块组装来获取合作伙伴。如果我们首先生成Java类,则这些方法将不存在。


  public CreditAgency locateService_CreditAgencyPartner() {
   return (CreditAgency) ServiceManager.INSTANCE
   .locateService(“CreditAgencyPartner”);
  }


  public CreditHistory locateService_CreditHistoryPartner() {
 return (CreditHistory) ServiceManager.INSTANCE
   .locateService(“CreditHistoryPartner”);
  }


  将下面的代码(在<download_root>/SCAArticleSeries3/codeSnippet1.txt中)粘贴到calulateCreditScore方法内。异步调用模式以粗体突出显示。


  ServiceManager serviceManager = new ServiceManager();


  // create credit rating return data object using the BO factory
  BOFactory bof =
  (BOFactory)serviceManager.locateService(“com/ibm/websphere/bo/BOFactory”
);
  DataObject creditRating = bof.create(“http://CreditApproval”,
“CreditRating”);
  creditRating.setString(“customerId”,
creditApp.getString(“customerId”));


  // create and call credit history service using async deferred response invocation
// pattern.


  CreditHistoryAsync cha = (CreditHistoryAsync)
  serviceManager.locateService(“CreditHistoryPartner”);


  Ticket tix = cha.getCreditLimitAsync(creditApp);


  CreditAgency creditAgency = (CreditAgency)   locateService_CreditAgencyPartner();
  Integer creditScore = creditAgency.getCreditScore  (creditApp);


  Double creditLimit = cha.getCreditLimitResponse(tix, Service.WAIT);


  creditRating.setInt(“creditScore”, creditScore.intValue());
  creditRating.setDouble(“creditLimit”, creditLimit.doubleValue());
  return creditRating;
 
  因为缺少导入,因此在Eclipse Editor中应报告一些编译错误(假定启动了自动生成功能)。在Java编辑器中任意位置单击右键,并选择Source=>Organize Imports,如图42中所示。



  图42. Organize imports
 
  将BOFactory接口解析到com.ibm.websphere.bo,如图43中所示。



  图43. 解析BOFactory
 
  将Service接口解析到com.ibm.websphere.sca,如图44中所示。



  图44. 将服务导入解析到com.ibm.websphere.sca
 
  保存Assembly Editor。
  
  测试解决方案


  现在可以测试我们的解决方案了。集成模块时,每个模块首先应进行相应的单元测试。在本文中,我们将假定各个开发团队(CreditHistory和CreditAgency)都已对其组件进行了相应的测试。


  将所有三个模块都添加到WebSphere Process Server:


  在WebSphere Integration Developer中,转到Servers视图,右键单击WebSphere Process Server,并选择Add/Romove Project(图45)。



  图45. 向WebSphere Process Server添加或删除项目
 
  选择Add All,以将全部SCA模块添加到服务器(图46)。



  图46. 添加所有模块
 
  单击Finish。


  通过WebSphere Integration Developer组件测试工具启动服务器。


  从CreditApproval模块的Assembly Editor中,右键单击CreditApproval组件,并选择Test Component,如图47所示。



 


  图47. 启动Test Component功能
 
  转到Configurations选项卡并删除两个模拟器,如图48中所示。如果合作伙伴不可用,可以使用模拟器来进行模拟,由于我们有实际的组件,因此不需要模拟器。



  图48. 删除模拟器
 
  回到Events页,在Initial响应参数中输入一些输入数据,如图49中所示,然后单击Continue。



  图49. 运行组件测试
 
  在Deployment Location对话框中,选择WebSphere Process Server v6.0。(图50)



  图50. 选择WebSphere Process Server运行时
 
  现在我们将对调用路径和结果进行检查。


  回到Events选项卡。从调用路径中选择最后一个Return,以创建结果,如图51中所示。



  图51. 选择Return
 
  应该看到与图52类似的结果。



  图52. 结果
 
  如果分析调用顺序,将会发现采用了异步调用:我们没有采用“请求-响应-请求-响应”的模式,而是使用了“异步请求-请求-响应-异步响应”模式。(图53)



  图53. 异步调用路径
 
  不保存,直接关闭测试编辑器并停止服务器。


  结束语


  通过导入和导出,我们可以将解决方案以面向服务的方式对外公开。在本文中,您了解了如何使用SCA导入和导出集成SCA解决方案。第4部分,我们将讨论如何使用其他某些绑定(如Web服务和JMS)与其他解决方案进行集成。


  作者简介


  Roland Barcia是位于纽约/新泽西地区的IBM Software Services for WebSphere的一位认证IT专家。他是IBM WebSphere:Deployment and Advanced Configuration一书的合著者(与Bill Hines合作完成)。有关Roland的详细信息,请访问他的网站。
 
  Jeff Brent是Service Component Architecture团队的顾问软件工程师和WebSphere Process Server SWAT的技术总监,他来自佛罗里达州的西棕榈滩。业余时间他喜欢陪伴家人和打篮球。

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐