使用 Spring Framework 设计和开发 SCA 组件,第 1 部分: 三剑客:Spring、SCA 和 Apache Tuscany
2009-11-23 00:00:00 来源:WEB开发网组件实现的业务功能将由其他组件作为服务 提供。实现可以依赖其他组件提供的服务;这些依赖关系被称作引用。实现可以有可设置的属性,即影响业务功能运转的数据值。下面的例子展示了如何将 Spring beans 提供为 SCA 服务,以及如何在您的 Spring 应用程序上下文中配置 SCA 引用和 SCA 属性。
示例
我们以图 2 中的 CalculatorComponent 为例。它需要依赖其他组件(AddComponent、SubtractComponent、MultiplyComponent 和 DivideComponent)来实现所需的功能。在本例中,CalculatorComponent 的业务功能是使用 Spring beans 实现的,AddComponent 是使用 JavaScript 实现的,SubtractComponent 和 MultiplyComponent 是使用简单 POJO 实现的,而 DivideComponent 是使用 Groovy 脚本实现的。
图 2. 基于 Spring 的 CalculatorComponent
下一步是创建一个名称为 calculator.composite 的 SCA 复合集(如清单 2 所示)来定义组件、服务、引用、属性声明以及这些元素之间的关联描述。详细信息请参见 下载 小节。
清单 2. calculator.composite
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
targetNamespace="http://calc"
xmlns:c="http://calc"
name="Calculator">
<component name="CalculatorComponent">
<implementation.spring location="META-INF/spring/calculator-context.xml"/>
<service name="CalculatorService">
<interface.java interface="calculator.CalculatorService"/>
<t:binding.rmi host="localhost" port="8099"
serviceName="CalculatorRMIService"/>
</service>
<reference name="addService" target="AddComponent" />
<reference name="subtractService" target="SubtractComponent" />
<reference name="multiplyService" target="MultiplyComponent"/>
<reference name="divideService" target="DivideComponent" />
</component>
<component name="AddComponent">
<t:implementation.script script="calculator/AddServiceImpl.js"/>
</component>
<component name="SubtractComponent">
<implementation.java class="calculator.SubtractServiceImpl"/>
</component>
<component name="MultiplyComponent">
<implementation.java class="calculator.MultiplyServiceImpl"/>
</component>
<component name="DivideComponent">
<t:implementation.script script="calculator/DivideServiceImpl.groovy"/>
</component>
</composite>
更多精彩
赞助商链接