`

SCA初探

阅读更多
   SCA其实有点象SPRING,只不过sca注入的是一个个实在的服务而已,快要成为工业标准了。下面笔记DEMO中的一个典型计算器

加法的接口:

package calculator;

/**
 * The Add service interface
 */
public interface AddService {

    double add(double n1, double n2);

}

加法的实现:

package calculator;

/**
 * An implementation of the Add service
 */
public class AddServiceImpl implements AddService {

    public double add(double n1, double n2) {
        return n1 + n2;
    }

}

减法的接口:

package calculator;

/**
 * The interface for the multiply service
 */
public interface SubtractService {

    double subtract(double n1, double n2);

}
减法的实现:

package calculator;

/**
 * An implementation of the subtract service.
 */
public class SubtractServiceImpl implements SubtractService {

    public double subtract(double n1, double n2) {
        return n1 - n2;
    }

}

乘法的接口:

package calculator;

/**
 * The interface for the multiply service
 */
public interface MultiplyService {

    double multiply(double n1, double n2);

}

乘法的实现:

package calculator;

/**
 * An implementation of the Multiply service.
 */
public class MultiplyServiceImpl implements MultiplyService {

    public double multiply(double n1, double n2) {
        return n1 * n2;
    }

}

除法的接口:

package calculator;

/**
 * The divide service interface
 */
public interface DivideService {

    double divide(double n1, double n2);

}


除法的实现:

package calculator;

/**
 * An implementation of the Divide service.
 */
public class DivideServiceImpl implements DivideService {

    public double divide(double n1, double n2) {
        return n1 / n2;
    }


}

计算器的接口

package calculator;


/**
 * The Calculator service interface.
 */
public interface CalculatorService {

    double add(double n1, double n2);

    double subtract(double n1, double n2);

    double multiply(double n1, double n2);

    double divide(double n1, double n2);

}

计算器的实现

package calculator;

import org.osoa.sca.annotations.Reference;


/**
 * An implementation of the Calculator service.
 */
public class CalculatorServiceImpl implements CalculatorService {

    private AddService addService;
    private SubtractService subtractService;
    private MultiplyService multiplyService;
    private DivideService divideService;

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

    @Reference
    public void setSubtractService(SubtractService subtractService) {
        this.subtractService = subtractService;
    }

    @Reference
    public void setDivideService(DivideService divideService) {
        this.divideService = divideService;
    }

    @Reference
    public void setMultiplyService(MultiplyService multiplyService) {
        this.multiplyService = multiplyService;
    }

    public double add(double n1, double n2) {
        return addService.add(n1, n2);
    }

    public double subtract(double n1, double n2) {
        return subtractService.subtract(n1, n2);
    }

    public double multiply(double n1, double n2) {
        return multiplyService.multiply(n1, n2);
    }

    public double divide(double n1, double n2) {
        return divideService.divide(n1, n2);
    }

}

calculator.composite组装文件

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
           targetNamespace="http://sample"
           xmlns:sample="http://sample"
           name="Calculator">

    <component name="CalculatorServiceComponent">
  <implementation.java class="calculator.CalculatorServiceImpl"/>
        <reference name="addService" target="AddServiceComponent" />
        <reference name="subtractService" target="SubtractServiceComponent" />
        <reference name="multiplyService" target="MultiplyServiceComponent" />
        <reference name="divideService" target="DivideServiceComponent" />
    </component>

    <component name="AddServiceComponent">
        <implementation.java class="calculator.AddServiceImpl"/>
    </component>

    <component name="SubtractServiceComponent">
        <implementation.java class="calculator.SubtractServiceImpl"/>
    </component>

    <component name="MultiplyServiceComponent">
        <implementation.java class="calculator.MultiplyServiceImpl"/>
    </component>

    <component name="DivideServiceComponent">
        <implementation.java class="calculator.DivideServiceImpl"/>
    </component>

</composite>

客户端使用

package calculator;

import org.apache.tuscany.sca.host.embedded.SCADomain;

/**
 * This client program shows how to create an SCA runtime, start it,
 * and locate and invoke a SCA component
 */
public class CalculatorClient {
    public static void main(String[] args) throws Exception {

        SCADomain scaDomain = SCADomain.newInstance("Calculator.composite");
       
        CalculatorService calculatorService =
            scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent");

        // Calculate
        System.out.println("3 + 2=" + calculatorService.add(3, 2));
        System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
        System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
        System.out.println("3 / 2=" + calculatorService.divide(3, 2));

        scaDomain.close();
    }

}


 

分享到:
评论

相关推荐

    sca_SCA凸优化_凸优化SCA_SCA_凸优化_

    SCA(Sequential Convex Approximation)算法是一种在优化领域中广泛应用的方法,特别是在处理凸优化问题时。凸优化是数学优化的一个分支,它专注于找到在凸函数上的全局最小值,因为这些函数具有良好的性质,比如...

    SCA_sca算法_SCA_sca程序代码_sca算法代码_

    这里的"SCA_sca算法_SCA_sca程序代码_sca算法代码"标题和描述提示我们,这个压缩包包含的是关于SCA算法的源程序代码,供学习和研究使用。 SCA算法主要分为几个关键步骤: 1. 数据收集:这是侧信道分析的第一步,...

    SCA介绍及实例

    **SCA(Software Composition Analysis,软件成分分析)**是一种用于识别、管理和缓解开源软件安全风险的技术。在现代软件开发中,开源组件的广泛使用使得SCA成为保障代码安全的重要工具。通过SCA,开发者可以了解...

    IBM SCA设计工具

    **IBM SCA设计工具**是面向服务架构(Service-Oriented Architecture, SOA)系统开发的重要组成部分,尤其在实现复杂企业级应用集成时扮演着关键角色。SOA是一种设计原则,它强调将业务功能作为独立的服务,这些服务...

    SCA_正余弦算法sca_sca算法_正弦余弦算法_SCA优化算法_SCA_

    正弦余弦算法(SCA)代码以及详解 。正弦余弦算法(SCA)是 Mirjalili于2016年提出的一种新型的群体智能优化算法,该算法结构简单、参数较少且易于实现,它的搜索过程主要受正弦和余弦函数的影响。

    SCA2_SCA_盲分离_

    SCA2_SCA_盲分离_相关知识点 SCA(Spectral Clustering Algorithm,光谱聚类算法)和盲分离是两种在信号处理领域中重要的技术。SCA主要用于数据聚类,而盲分离则用于非合作环境下的信号恢复,两者在实际应用中有着...

    SCA简单本地调用案例

    标题 "SCA简单本地调用案例" 涉及的是软件组件服务(Service Component Architecture,简称SCA)在实现本地服务调用时的一个基础示例。SCA是一种用于构建分布式应用和服务的框架,它允许开发者以声明式的方式组合和...

    SCA3300.rar

    SCA3300是一款高性能的三轴加速度传感器,主要设计用于工业级应用,如倾斜测量、结构健康监测和动态重量检测等。这款传感器具备湿度补偿算法,确保在各种环境条件下都能提供精确的测量数据,使用户可以专注于其特定...

    Fortify SCA(SourceCodeAnalysis)安装及使用手册.docx

    Fortify SCA(Source Code Analysis)安装及使用手册 Fortify SCA 是一款功能强大的源代码分析工具,旨在帮助开发者和安全专家检测和修复代码中的安全漏洞。本文档提供了 Fortify SCA 的安装和使用指南,旨在帮助...

    MTK sca文件

    MTK(MediaTek)SCA文件是针对MTK芯片平台进行固件提取和刷机过程中不可或缺的工具。在本文中,我们将深入探讨MTK SCA文件的用途、工作原理以及如何利用这些文件来优化和调整手机或其他设备的固件。 MTK(MediaTek...

    SCA_matlab_稀疏分量分析_SCA_源码

    稀疏分量分析(Sparse Component Analysis,SCA)是一种数据挖掘和信号处理技术,它旨在从复杂的混合信号中提取稀疏或局部相关的成分。在SCA中,目标是找到一个线性变换,使得数据在新的坐标系下尽可能地稀疏,即大...

    SCA and DEM.zip_DEM模型_sca_dem_各向异性_各向异性SCA_岩石物理

    在地质学和地球物理学领域,SCA(Statistical Continuum Approximation,统计连续体近似)和DEM(Discrete Element Method,离散元方法)是两种广泛使用的数值模拟技术,它们在岩石物理研究中占据着重要的地位。...

    全部的SCA&SDO中文规范

    标题中的“全部的SCA&SDO中文规范”指的是Service Component Architecture (SCA) 和 Service Data Objects (SDO) 的中文版本规范集合。这些技术是IBM提出的用于构建面向服务架构(SOA)应用的关键组件。 1. **...

    Fortify SCA 19.1.0-fiona.zip

    Fortify Software Security Center (SCA) 是一款由Micro Focus公司开发的强大静态代码分析工具,用于检测应用程序中的安全漏洞。版本19.1.0-fiona是该软件的一个更新版本,包含了一些新特性、修复和改进。这个压缩包...

    SCA-Ver3.0_软件无线电_SCA_

    SCA(Software Communications Architecture,软件通信架构)是软件无线电领域中的一个重要概念,它定义了一种标准的、模块化的体系结构,旨在实现通信系统的快速重构和软件升级,以适应不断变化的无线通信需求。SCA...

    SCA sys 6000全部培训材料

    SCA(System for Cable Assembly)6000是一款专为电缆组装行业设计的高效自动化系统。这份"SCA sys 6000全部培训材料"包含了一系列关键知识点,旨在帮助用户全面理解和操作该系统。 首先,E-plan是工程规划软件,...

    基于Tuscany SCA的分布式SCA应用的设计与实现.pdf

    在第一种类型中,本质上是将整个SCA应用视为一个更大应用的一部分,而第二种类型则将提供服务的SCA应用视作另一个SCA应用的客户端。本文提出的模型实现了SCA应用分布性的第一种类型。 7. 实际案例应用 在文章的部分...

    SCA/SDO学习资料

    SCA(Service Component Architecture,服务组件架构)与SDO(Service Data Object,服务数据对象)是面向服务架构(SOA,Service-Oriented Architecture)中的关键组成部分,它们为构建、管理和部署分布式应用程序...

    SCA编程模型入门,SCA编程模型入门

    SCA编程模型入门.doc,WebSphere Integration Developer,WebSphere Integration Developer,SCA编程模型入门,SCA编程模型入门,SCA编程模型入门

Global site tag (gtag.js) - Google Analytics