Tuscany SCA 引导和装配的过程

2024-03-21 00:32
文章标签 过程 引导 装配 sca tuscany

本文主要是介绍Tuscany SCA 引导和装配的过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Tuscany SCA在运行的时候进行各种服务的装配,根据XML格式的SCA元素的定义,从SCDL和其他格式的文件中读取装配的信息。

一、装配过程

主要分成三个步骤:

1、载入(load)阶段从SCDL读取配置信息处理后,生成内存中的模型。

2、创建(build)阶段评估模型并将模型组成单独的组件元素,如Service,Reference,Component。

3、连接(connect)阶段连接Reference到相应的Service。

 

二、装配过程由部署发起,按照顺序逐步执行。

三个步骤包含在部署当中,由部署发起。

这是代码的片段:

.
.
.
        
//  load the model
        load(parent, componentDefinition, deploymentContext);
 
       
//  resolve autowires
        resolver.resolve( null , componentDefinition);

        
//  build runtime artifacts
        build(parent, componentDefinition, deploymentContext);

        Collection
< Component >  components  =  deploymentContext.getComponents().values();
       connector.connect(componentDefinition);
.
.
.

 

三、Loader通过Loader接口实现。

有两种类型的loader:ComponentTypeLoader和StAXElementTypeLoader,通过Loader接口来实现对两中类型的loaer进行载入。

1、ComponentTypeLoader 类型loader负责载入和运行环境相关的信息,即系统环境的实现

2、StAXElementLoader 类型loader负责载入在系统环境运行的应用相关的信息

A) Loader的继承关系图:

B) ComponentTypeLoader的继承关系图:

C) StAXElementLoader的继承关系图:

D)  相关代码片段如下:

        //  register component type loaders
        loaderRegistry.registerLoader(SystemImplementation. class new  SystemComponentTypeLoader(introspector));
        loaderRegistry.registerLoader(SystemCompositeImplementation.
class ,
            
new  SystemCompositeComponentTypeLoader(loaderRegistry));

        
//  register element loaders
        registerLoader(loaderRegistry,  new  ComponentLoader(loaderRegistry, propertyFactory));
        registerLoader(loaderRegistry, 
new  ComponentTypeElementLoader(loaderRegistry));
        registerLoader(loaderRegistry, 
new  CompositeLoader(loaderRegistry,  null ));

 

四、宿主环境的引导

SCA是在主机环境下引导,所谓宿主环境就是引导SCA环境所在的系统环境。

默认的引导过程是在 DefaultBootstrapper 中实现的,过程如下:

 

相对应的代码片段:

1、Create Runtime Component

//       创建StandaloneRuntimeImpl 实例
        StandaloneRuntime runtime  =  (StandaloneRuntime)DirectoryHelper.createRuntime(runtimeInfo);

TuscanyRuntime继承关系图:

2、Create Bootstrap Deployer

.
.
.
Bootstrapper bootstrapper 
=  createBootstrapper();
.
.
.
bootstrapper.createDeployer()
.
.
.

Bootstrapper的继承关系图:

3、Locate System Assembly和Deploy System Assembly

就是前面提到的load、build和connect处理过程,这部分在前面已经说过,不再重复。

4、Locate Application Assemblies、Deploy Application Assembly和Start Server

从当前CVS下载的版本,这一部分是临时实现。在后面的开发过程中可能还会有变化。

.
.
.
int  status  =  runtime.deployAndRun(applicationScdlURL, applicationClassLoader, appArgs);
.
.
.

后面结合实际的例子逐步细化。

 

这篇关于Tuscany SCA 引导和装配的过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/831232

相关文章

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、