生成实现
我们现在将为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中国
相关推荐
-
谁知道阿里云河南服务中心是干什么的?
一直接到阿里云服务中心的电话,说是阿里云的授权中心,主要提供阿里云的区域服务的?请问其他地方也有阿里云的服务中 […]
-
来之不易的0.1秒 只为离梦想更进一步
0.1秒可以做什么?弹指一挥间,什么也做不了。我们甚至感受不到它的存在。然而对于云端筑梦的人来说,0.1秒的差距,结局也许就是天壤之别。
-
如何透过业务和技术看SOA的发展
随着SOA发展的深入,各种SOA相关技术标准也随之发展和完善。面对庞大而复杂的SOA相关技术标准,我们如何来有选择的使用它们呢?
-
BEST:简化面向服务和软件工程
面向服务虽说不是新词,但如果你对面向服务的理解只是认为简单的编写代码的话,那就大错物特错了。