首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenDaylight系列文章(二):OpenDaylight初窥(上篇)之OpenDaylight的工程技术架构

那么OpenDaylight控制器使用了哪些核心技术?它的工程技术架构又是怎样的呢? 万殊一辙。...OpenDaylight的工程技术架构其实就像一座高楼大厦的构造,核心技术如同风靡建筑行业的装配式技术。...OSGI:以java为技术平台的动态模块化规范。OSGI拥有许多优秀特性,如动态性、模块化和可扩展力。它在OpenDaylight中被引用为后端技术框架。...OSGI就像建筑行业的装配式技术那样去组装和管理这些feature: 在OSGI中部署的最小单位是bundle(bundle就相当于一个普通的jar),它就像预制的建筑构件,比如墙板、楼板、楼梯、阳台...而OSGI框架和KARAF容器可以实现功能组件即插即用,保证了ODL控制器体态匀称、身形灵活。 Maven---OpenDaylight的“构件工厂” Maven: 项目管理工具。

98450

OpenDaylight开发学习十问十答

3 学习或者开发基于ODL的应用,需要了解很多背景知识,比如Maven, OSGi, Yang等,还有一大堆网络协议, 该如何学习呢?...Java的基础一定要有, ODL是利用Java开发的,依赖大量Java的库,没有Java的基础可能会比较困难,很多语法可能会读不懂,无法入手。...有了Java基础后,第一步就是建议大家花一两个星期时间看一下《Maven实战》这本书,因为ODL的项目就是用Maven管理的,所以需要了解一下Maven是什么东西,了解一下核心的内容,比如说:约定优于配置的原则...、对应的核心插件、构建的基本过程这些。...执行mvn clean install时增加参数-e,打印详细异常堆栈,增加参数-X,打开Maven的调试标记运行,查看完整的依赖踪迹。 5 版本加载运行出错 OSGi规范看了吗?

97880
您找到你想要的搜索结果了吗?
是的
没有找到

Maven依赖Jar冲突排查及解决

标红的就是冲突版本,白色的是当前的解析版本。 在解决冲突的时候直接把红色的排除是不对的,因为红色的本身就是冲突时被忽略的版本。...Maven Helper插件 解决冲突有两种方式 检测冲突的插件升降版本解决 Jar隔离 名替换 归纳了解了几种业内的解决方案如下,各有优劣 spring boot方式,统一管理各个组件版本,简洁高效...,但遇到必须使用不同版本jar时,就不行了 sofa-ark 用FatJar技术去实现OSGI的功能,jar隔离原理上跟osgi一致,不过基于fat jar技术,通过maven 插件来简化复杂度,比较轻量...shade 也有maven插件,通过更改jar的字节码来避免jai冲突,jar冲突的本质是类的全限定名(名+类名)冲突了,通过全限定名不能定位到你想用的那个类,maven-shade插件可以更改...这种情况无论如何调整依赖都无法解决冲突的问题 sofa-ark sofa-ark 框架支持单独application 和 sofaboot 两种方式,满足单独使用和web框架下的jar隔离,还能基于zk

69340

sofa-ark类隔离技术分析调研

不过坏处就是缺少了灵活性,业务方无法修改组件的任何依赖。 OSGI技术 使用OSGI技术,用felix、karaf或者Jigsaw这样的容器对jar进行暴露和隔离。...以上就是Fat-Jar技术的基本原理,其实核心就在于要定义一套Jar的文件规范,并且写一个打包插件按照这个规范打包,然后写一个Launcher进行解包、用依赖配置ClassLoader、用反射调用实际...当然,由于plugin和原生jar是共用的同一个maven坐标,因此,我们就要用maven的"classifier"属性来区别。...在用sofa-ark-maven-plugin打包时,会同时生成两个,一个是Ark,一个就是Ark Biz。...sofa-ark项目其实是一个以Ark Container为核心的容器生态。

1.5K30

Java基础-类加载器和核心机制

引导类加载器是无法找到 SPI 的实现类的,因为它只加载 Java 的核心库 通常当你需要动态加载资源的时候 , 你至少有三个 ClassLoader 可以选择 : 1.系统类加载器或叫作应用类加载器...但也是为了保证安全,这样核心库就不在查询范围之内。 OSGI原理介绍 OSGi™是 Java 上的动态模块系统。...OSGi 已经被实现和部署在很多产品上,在开源社区也得到了广泛的支持。Eclipse 就是基于 OSGi 技术来构建的。 原理: OSGi 中的每个模块(bundle)都包含 Java 和类。...也就是说需要能够隐藏和共享一个模块中的某些 Java 和类。这是通过 OSGi 特有的类加载器机制来实现的。OSGi 中的每个模块都有对应的一个类加载器。它负责加载模块自己包含的 Java 和类。...当它需要加载 Java 核心库的类时(以 java开头的和类),它会代理给父类加载器(通常是启动类加载器)来完成。

53620

Salesforce 如何用一年的时间大规模迁移到 OpenJDK 11

相反,Java EE 和 CORBA 技术的独立版本作为 Maven 构件发布,并可以从第三方网站(如 Maven Central)上获取,我们从那里下载了它们并将它们添加到了 Salesforce 应用程序的模块路径中...其他设计方面的变更影响来自核心库的 Java 语言 API,核心库的实现已经被更改,以便更严格地执行其原始 API 契约。...OSGi OSGi 就为我们带来了一个机会,在启动过程中,我们遇到了 javax.annotation 的问题。...根据 JPMS 规范,自动模块应该导出其所有的——显然在我们的例子中不会发生这种情况! 事实证明,我们在 OSGi 框架的解析逻辑中发现了一个 bug(违反了 JPMS 规范)。...我们的修复程序可以确保将自动模块的所有自动添加到 VM 提供的列表中,它被接受并被合并发布到了 OSGi 社区。

69420

微内核架构(Microkernel Architecture)二

2.2 OSGi 的两种含义 OSGi 一方面指 OSGi Alliance 组织,另一方面指 OSGi Alliance 制定的一个基于 Java 语言的服务规范——OSGi 服务平台。...2.2.2 OSGi 规范 这个规范的核心是一个框架,定义了应用程序的生命周期模式和服务注册。...例如,Bundle 的名称、描述、开发商、classpath,以及需要导入的和输出的等,OSGi 核心系统会将这些信息加载到系统中用于后续使用。...OSGi 提供了一个服务注册的功能,用于各个插件将自己能提供的服务注册到 OSGi 核心的服务注册中心,如果某个服务想用其他服务,可以直接在服务注册中心搜索可用服务。...三 规则引擎架构 3.1 简析 规则引擎从结构上来看,也属于微内核架构的一种具体实现,其中执行引擎可以看作是微内核,执行引擎解析配置好的业务流,执行其中的条件和规则,通过这种方式来支持业务的灵活多变。

73530

插件式开发架构综述

开发新的插件,无需调整现有运行主体的代码和二进制。...2.3.2 插件间消息通信 插件间消息通信属于一种开发人员可以自定义的扩展方式,插件运行主体无法定义所有的消息类型及消息的处理方法。...它的核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册。OSGI框架定义了大量的OSGI通用服务:日志、配置管理,XML解析等通用服务。...模块层中bundle的特点: bundle 以 jar 形式存在的模块化物理单元,包含了代码,资源文件和元数据(模块描述信息)。 bundle 是开发、部署 OSGi 应用的基本单元。...bundle 的核心是 META-NF 目录下的 MANIFEST.MF 文件。 bundle 定义了内部的对外可见性。 每个 bundle 都有单独的类加载器。

2.8K20

几种Java热插拔技术实现总结

一般Java开发人员所说的OSGI是指由OSGi Alliance组织制定的Java模块化规范,该规范的核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册。...基于这个框架定义了大量的OSGi服务:日志、配置管理,HTTP服务(运行Servlet)、XML解析、设备访问、软件包管理、许可管理、用户管理、IO连接、Jini和UPnP等。...2、OSGI是一个微核的系统,所谓微核是指其核心只有为数不多的几个jar。基于OSGI框架的系统可分可合,其结构的优势性导致具体的Bundle不至于影响到全局,不会因为局部的错误导致全局系统的崩溃。...例如Java EE项目中可能会因为某个Bean的定义或注入有问题,而导致整个应用跑不起来,而使用OSGI则不会有这种问题,顶多相关的几个Bundle无法启动。...Spring MVC时,通过DispatcherServlet启动的Bean与OSGI Bundle启动的Bean无法相互依赖,需要做特殊处理,后面文章中会有介绍。

1.7K10

【Java编程进阶之路 04】深入探索:Java类加载器与双亲委派 & 打破双亲委派桎梏

因为所有的类加载请求最终都会传送到顶层的启动类加载器中,而启动类加载器只加载核心类库,所以恶意代码无法通过自定义类来攻击系统。 代码热部署:双亲委派模型还支持代码的热部署。...父类加载器无法加载:如果父类加载器无法加载这个类(例如,它不在父类加载器的搜索路径中),加载请求会返回给子类加载器。...只有当父类加载器无法加载这个类时,Webapp类加载器才会尝试自己去加载这个类。...下面是如何在OSGi中打破双亲委派模型的一些步骤: 创建OSGi Bundle:首先,你需要使用适当的工具(如Maven的Bundle插件)创建一个OSGi bundle。...定义导出和导入的:在你的bundle的manifest文件中,你需要定义哪些应该被导出(供其他bundles使用)和哪些应该被导入(从你的bundles中使用)。

13310

Java9来了,快来了解下JPMS基础吧!

阅读“模块”相关的文章时,请注意你正在阅读的文章的作者是否来自OSGi / JBoss模块设计阵营。...(我从来没有主动使用OSGi或JBoss模块,尽管我已经使用Eclipse和其他在内部使用OSGi的工具。)...它暴露一个叫com.opengamma.util。使用模块路径(modulepath)(由JVM执行)时,所有其他软件都将被隐藏。 与java.base(JDK的核心模块)有一个隐含的依赖关系。...由于隐藏的软件没有在module-info.class中列出,所以像Maven这样的工具必须打开jar文件,以发现哪些隐藏的软件是为了警告冲突。...我已经相信,在包含最高之后,来命名你的模块,然后该模块“拥有”子,是唯一的理想策略。 构建系统的冲突 - 谁负责? Maven pom.xml还包含有关项目的信息。是否应该扩展以允许添加模块信息?

2.7K80

模块化服务规范——OSGI

该规范和核心部分是一个框架 ,其中定义了应用程序的生命周期模式和服务注册。...传统的开发和部署的局限性 1、java讲求的是面向接口编程,比如接口A有两个实现类B和C,当在运行时需要将B转换成C的时候,就需要重新启动服务,否则是无法实现的,也就是说J2EE本身是不提供这种支持的。...运行期,如果这些第三方Jar不存在,或者命名存在差异,或者提供了不同JAR版本,则会出现各种不同结果。Java SE/Java EE平台没有细化这方面的任何内容。...通常,我们会将企业应用以单个WAR形式存在,其中内置了当前应用所有的内容,包括.class、.jsp、.js等资源。...很显然,这给维护工作带来挑战,毕竟升级或修改WAR中的任何内容都可能会波及到整个WAR

1.5K30

一文理解Java中的SPI机制

系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案、xml解析模块、jdbc模块的方案等。面向对象的设计推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。...在模块化设计中这个机制尤其重要,其核心思想就是解耦。 ? SPI的接口是Java核心库的一部分,是由引导类加载器(Bootstrap Classloader)来加载的。...引导类加载器在加载时是无法找到SPI的实现类的,因为双亲委派模型中规定,引导类加载器BootstrapClassloader无法委派系统类加载器AppClassLoader来加载。该如何解决此问题?...这些SPI的接口是由Java核心库来提供,而SPI的实现则是作为Java应用所依赖的jar包被包含进类路径(CLASSPATH)中。例如:JDBC的实现mysql就是通过Maven被依赖进来。...双亲委派模型的第三次“被破坏”是由于用户对程序的动态性的追求导致的,例如OSGi的出现。在OSGi环境下,类加载器不再是双亲委派模型中的树状结构,而是进一步发展为网状结构。

71210

持续3分钟 - Java -09

JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。 ?...注意这里不一定非得要从一个 Class 文件获取,这里既可以从 ZIP 中读取(比如从 jar 和 war 中读取),也可以在运行时计算生成(动态代理), 也可以由其它文件生成(比如将 JSP 文件转换成对应的...1.4 解析 解析阶段是指虚拟机将常量池中的符号引用替换为直接引用的过程。符号引用就是 class 文件中的: 1. CONSTANT_Class_info 2....双亲委派机制 当一个类收到了类加载请求,他首先不会尝试自己去加载这个类,而是把这个请求委派给父类去完成,每一个层次类加载器都是如此,因此所有的加载请求都应该传送到启动类加载其中,只有当父类加载器反馈自己无法完成这个请求的时候...图片来自网络,侵删 04 OSGI(动态模型系统) OSGi(Open Service Gateway Initiative),是面向 Java 的动态模型系统,是 Java 动态化模块化系 统的一系列规范

38320

技术角 | 架构学习书摘总结(四)可扩展架构模式(下)

调用链太长,性能下降 调用链太长,问题定位困难 没有自动化支撑,无法快速交付 没有服务治理,微服务数量多了后管理混乱 总结一下,微服务的陷阱主要有以下几点: 微服务拆分过细,过分强调“small”;...如果因为团队规模和人力的原因无法全面覆盖,至少要做到接口测试自动化。...接口框架不是一个可运行的系统,一般以库或的形式提供给所有微服务调用。例如,针对上面的JSON样例,可以由某个基础技术团队提供多种不同语言的解析(Java、Python、C等)。...现在我们讨论OSGi,已经和嵌入式应用关联不大了,更多的是将OSGi当做一个微内核的架构模式。...规则引擎架构 规则引擎从结构上来看也属于微内核架构的一种具体体现,其中执行引擎可以看做微内核,执行引擎解析配置好的业务流,执行其中的条件和规则,通过这种方式来支持业务的灵活多变。

46450
领券