使用 Spring Framework 设计和开发 SCA 组件,第 2 部分: 使用 Apache Tuscany 的高级技巧
2010-02-25 00:00:00 来源:WEB开发网如上所示的 @Service 注释表明 CalculatorServiceImpl bean 被公开为一个服务并使用 CalculatorService 作为其服务接口。对于由这些 bean 公开的每个服务,在 SCA 复合集内都应该定义一个对等的 <service/> 元素(如 清单 4 所示)。
清单 6 内所示的 @Reference 注释,在由复合集内可用的其他 SCA 组件提供的服务上声明了这个 bean 类的依赖项。在本例中,Calculator bean 依赖于 SCA 服务 addService、subtractService、 multiplyService 和 divideService。
在 CalculatorServiceImpl bean 内,addService 和 divideService 上的依赖项是通过定义 setter 方法上的一个引用注入声明的,这些方法的参数由相应的服务接口 AddService 和 DivideService 键入。subtractService 和 multiplyService 上的依赖项是通过在由相应服务接口 SubtractService 和 MultiplyService 键入的字段上定义一个引用注入声明的。
清单 6 所示的 @Property 注释通过在一个适当的 setter 方法上定义 @Property 注释,声明了由 SCA 组件提供的可设置属性上的依赖项。
建议
建议您独立使用 SCA 注释;不要与任何 Spring 本机注释相混淆。此外,还建议您使用 SCA 注释或自定义 SCA 名称空间元素(如第 1 部分内讨论的)来为 Spring 应用程序显式声明 SCA 服务、引用和属性。不要将它们混在一起。
为基于 Spring 的 SCA 组件使用 SCA 绑定
绑定 是为服务和引用所用的。引用使用绑定来描绘调用一个服务所需的访问机制,这个服务可以是由另一个 SCA 复合集提供的一个服务。服务使用绑定来描述客户机(可以是来自于另一个 SCA 复合集的客户机)用来调用服务的访问机制。
使用 Spring 作为其实现技术的组件无需在 Spring 配置内引入基于绑定的 SCA 元数据就可以连接 SCA 服务和引用。Spring 上下文对 SCA 环境知之不多。因而,这个 Spring bean 实现与之前示例内的保持相同,但是要在 SCA 复合集的级别选用不同的绑定。
Apache Tuscany 运行时支持各种绑定,比如 Web 服务、JMS、 HTTP、RMI、JSON RPC、EJB 和 ATOM。因这些绑定独立于 Spring 上下文,所以,所有受 SCA 支持的绑定均可被用于 Spring 实现。
请注意 Apache Tuscany 并不支持在一个基于 Spring 的 SCA 组件上的异步对话服务编程。
结束语
在本文中,您了解了多种应用程序上下文可被综合起来用作 SCA 组件的一个实现。这个 SCA 运行时为含多种应用程序上下文的场景创建了一个目标应用程序上下文实例。您还了解了如何使用 SCA 注释在 spring bean 类内显式声明 SCA 服务、引用和属性。
SCA 和 Spring 能够构成一个强大的组合。Spring 提供了基础设施来开发具有更高效率和运行时性能的组件,还改进了测试覆盖率和应用程序质量。SCA 提供了必要的基础设施来组装和建模基于 SOA 的组件,SCA 让您的组件能够公开服务,将服务组件连接在一起,以及处理异构的分布式系统。
本文示例源代码或素材下载
更多精彩
赞助商链接