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

相关文章

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

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