12
返回列表 发新帖
楼主: jieforest

使用Spring开发SCA组件

[复制链接]
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
11#
 楼主| 发表于 2010-2-8 23:38 | 只看该作者
在这个例子中,CalculatorComponent 是一个 Spring 应用程序,它定义了使用 Spring bean 的业务逻辑。创建一个名为 calculator-context.xml 的应用程序上下文文件,如清单 5 所示,它通过将所需的依赖项设置为 bean 属性定义了 CalculatorComponent 的业务逻辑。

清单 5. calculator-context.xml

                               
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sca="http://www.springframework.org/schema/sca"
       xsi:schemaLocation="
                                http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/sca
       http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">

    <bean id="Calculator" class="calculator.CalculatorServiceImpl">        
        <property name="addService" ref="addService"/>
        <property name="subtractService" ref="subtractService"/>
        <property name="multiplyService" ref="multiplyService"/>
        <property name="divideService" ref="divideService"/>
    </bean>

</beans>

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
12#
 楼主| 发表于 2010-2-8 23:38 | 只看该作者
在 使用 Spring Framework 设计和开发 SCA 组件,第 1 部分:三剑客:Spring、SCA 和 Apache Tuscany,您了解到自定义 SCA 名称空间元素,比如 <sca:service>、<sca:reference> 和 <scaroperty>,可用于在这个应用程序上下文文件内(参见清单 5)显式声明 SCA 服务、引用和属性。在本文中,您又了解了 SCA 注释是如何在 CalculatorServiceImpl bean 类内用作一种显式声明 SCA 服务、引用和属性的备选方式。清单 6 给出了一个示例。

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
13#
 楼主| 发表于 2010-2-8 23:38 | 只看该作者
清单 6. CalculatorServiceImpl.java

                               
@Service(CalculatorService.class)
public
                                class CalculatorServiceImpl implements CalculatorService {
   
    // setter injection
    public AddService addService;
   
    // field injection
    @Reference
    public SubtractService subtractService;
   
    // field injection (different reference and field name)
    @Reference(name="multiplyService")
    public MultiplyService multiply;  
   
    // setter injection (different reference and field name)
    public DivideService divide;  
   
    // setter injection
    public String message;

    @Reference
    public
                                void setAddService(AddService addService) {
        this.addService = addService;
    }
   
    public AddService getAddService() {
        return addService;
    }

    public
                                void setSubtractService(SubtractService subtractService) {
        this.subtractService = subtractService;
    }
   
    public SubtractService getSubtractService() {
        return subtractService;
    }   
   
    @Reference(name="divideService")
    public
                                void setDivideService(DivideService divide) {
        this.divide = divide;
    }
   
    public DivideService getDivideService() {
        return divide;
    }
   
    public
                                void setMultiplyService(MultiplyService multiply) {
        this.multiply = multiply;
    }
   
    public MultiplyService getMultiplyService() {
        return multiply;
    }
   
    @Property
    public
                                void setMessage(String message) {
        this.message = message;
    }
   
    …
}

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
14#
 楼主| 发表于 2010-2-8 23:38 | 只看该作者
如上所示的 @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 服务、引用和属性。不要将它们混在一起。

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
15#
 楼主| 发表于 2010-2-8 23:39 | 只看该作者
为基于 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 组件上的异步对话服务编程。

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
16#
 楼主| 发表于 2010-2-8 23:39 | 只看该作者
结束语

在本文中,您了解了多种应用程序上下文可被综合起来用作 SCA 组件的一个实现。这个 SCA 运行时为含多种应用程序上下文的场景创建了一个目标应用程序上下文实例。您还了解了如何使用 SCA 注释在 spring bean 类内显式声明 SCA 服务、引用和属性。

SCA 和 Spring 能够构成一个强大的组合。Spring 提供了基础设施来开发具有更高效率和运行时性能的组件,还改进了测试覆盖率和应用程序质量。SCA 提供了必要的基础设施来组装和建模基于 SOA 的组件,SCA 让您的组件能够公开服务,将服务组件连接在一起,以及处理异构的分布式系统。

使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
17#
发表于 2010-2-9 01:29 | 只看该作者
nice job

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
186
授权会员
日期:2008-07-27 22:25:202014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14版主4段
日期:2015-02-26 02:21:03慢羊羊
日期:2015-03-04 14:51:35
18#
发表于 2010-2-9 15:06 | 只看该作者
收藏!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表