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

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法