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

OSGi 基本原理

OSGi联盟已经开发了例如像HTTP服务器、配置、日志、安全、用户管理、XML等很多公共功能标准组件接口。这些组件的兼容性插件实现可以从进行了不同优化和使用代价的不同计算机服务提供商得到。...服务层 一个OSGi 服务就是注册到 OSGi 框架中的一个 Java 对象。注册的时候可以设置这个 Service 的属性。而在获取 Service的时候可以根据属性进行过滤。...此外,如果在删除发布的服务之前bundle停止了,框架会帮助你删除这些服务。...reference =   bundleContext.getServiceReference(StockListing.class.getName()); 注意这里的reference是服务对象的间接引用,可是为什么要用间接引用而不直接返回那个实际的服务对象呢...参考资料 OSGi入门篇:模块层 OSGi入门篇:生命周期层 OSGi入门篇:服务层 OSGi原理与最佳实践

2.7K90

Java架构-一些设计上的基本常识

8、可配置一定可编程,并保持友好的CoC约定 因为使用环境的不确定因素很多,框架总会有一些配置, 一般都会到classpath直扫某个指定名称的配置,或者启动时允许指定配置路径, 做为一个通用框架,应该做到凡是能配置文件做的一定要能通过编程方式进行...另外,尽可能做一个标准约定,如果用户按某种约定做事时,就不需要该配置项。 比如:配置模板位置,你可以约定,如果放在templates目录下就不用配了, 如果你想换个目录,就配置下。...比如get某个属性值,或查询一条数据库记录。...比如: User deleteUser(id),删除用户并返回被删除的用户,考虑改为getUser()和void1的deleteUser()。...为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!

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

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

为什么我们认为我们可以安全地从 OpenJDK 8(上一个最新的 LTS 版本)过渡到 OpenJDK 11 呢? 首先,我们并不是一蹴而就的。...因此,对于我们的开发人员来说,升级到 OpenJDK 11 运行时就像用 OpenJDK 11 版本的字符串覆盖配置属性一样简单。...Java 9 开始将这些 API 分离到它们各自的模块中,这些模块被注解为不推荐使用,以便删除,这表明了在将来的版本中会删除它们的意图。这些模块包含在运行时镜像中,但默认情况下未启用。...(有一个 true 的回归影响了布尔型 bean 属性的内省;这是由 OpenJDK 实现本身的一个 bug 引起的,我们报告了这个 bug,并且它已经被修复了。)...这个特性最初是在 Java 9 中引入的,它通过将字符(char)数组迁移到更紧凑的字节(byte)数组(加上一个编码标识字段)来提供更节省内存的字符串内部表示。

69620

大厂常问到的14个Java面试题

5. osgi类加载机制 ?...osgi类加载模型是网状的,可以在模块(Bundle)间互相委托 osgi实现模块化热部署的关键是自定义类加载器机制的实现,每个Bundle都有一个自己的类加载器,当需要更换一个Bundle时,就把Bundle...*开头的类委派给父类加载器加载 2)否则,将委派列表名单(配置文件org.osgi.framework.bootdelegation中定义)内的类委派给父类加载器加载 3)否则,检查是否在Import-Package...Selector)负责处理多个channel注册(register)的兴趣事件(SelectionKey)集合(底层借助操作系统提供的epoll()),netty bossgroup处理accept连接(没看明白为什么...13. list中存放可重复字符串,如何删除某个字符串 调用iterator相关方法删除 倒删,防止正序删除导致的数组重排,index跳过数组元素问题。 14.

51520

hibernate5新特性展示

Configuration配置类。...从hibernate的古老版本到现在,它一直支持用户按任意的顺序添加新的配置和关系映射,并允许我们在程序运行过程中查询获取相应的状态和映射信息。但这也意味着我们不能根据一些实时配置高效地建立映射信息。...想要连接更多关于新的引导API配置指南可到hibernate 官网的User Guide部分 在一定的限制上,Configuration配置方法仍然可以使用,不过它的一些方法已被删除。...hibernate-spatial 支持Java 8 虽然并非完全支持,更准确来说,hibernate5.0增加了对Java 8 Date 和Time API的支持,以使我们能够更轻松地完成我们的实体映射类的配置属性到数据库的支持...支持 这始于一个不满的脆弱性hibernate-osgi测试.第一部分是一个使用了Pax Exam 和 Karaf的更好的测试启动.这会导致我们生成一个hibernate Karaf风格的文件 OSGi

1.4K40

JAVA后端面试100 Q&A之第一篇

osgi类加载模型是网状的,可以在模块(Bundle)间互相委托 osgi实现模块化热部署的关键是自定义类加载器机制的实现,每个Bundle都有一个自己的类加载器,当需要更换一个Bundle时,就把Bundle...连同类加载器一起换掉以实现代码的热替换 当收到类加载请求时,osgi将按照下面的顺序进行类搜索: 1)将以java....*开头的类委派给父类加载器加载 2)否则,将委派列表名单(配置文件org.osgi.framework.bootdelegation中定义)内的类委派给父类加载器加载 3)否则,检查是否在Import-Package...Selector)负责处理多个channel注册(register)的兴趣事件(SelectionKey)集合(底层借助操作系统提供的epoll()),netty bossgroup处理accept连接(没看明白为什么...,如何删除某个字符串 调用iterator相关方法删除 倒删,防止正序删除导致的数组重排,index跳过数组元素问题 15.

49610

一线互联网常见的 14 个 Java 面试题,你颤抖了吗程序员

类加载机制 osgi 类加载模型是网状的,可以在模块(Bundle)间互相委托 osgi 实现模块化热部署的关键是自定义类加载器机制的实现,每个 Bundle 都有一个自己的类加载器,当需要更换一个...,将委派列表名单(配置文件 org.osgi.framework.bootdelegation 中定义)内的类委派给父类加载器加载 3)否则,检查是否在 Import-Package 中声明,如果是,则委派给...负责处理多个 channel 注册(register)的兴趣事件(SelectionKey)集合(底层借助操作系统提供的 epoll()),netty bossgroup 处理 accept 连接(没看明白为什么...以块的方式处理数据,NIO 提供 bytebuffer,分为堆内和堆外缓冲区,读写时均先放到该缓冲区中,然后由内核通过 channel 传输到对端,堆外缓冲区不走内核,提升了性能 13. list 中存放可重复字符串...,如何删除某个字符串 调用 iterator 相关方法删除 倒删,防止正序删除导致的数组重排,index 跳过数组元素问题 14.

42630

一线互联网常见的 14 个 Java 面试题,你颤抖了吗程序员

osgi 类加载模型是网状的,可以在模块(Bundle)间互相委托 osgi 实现模块化热部署的关键是自定义类加载器机制的实现,每个 Bundle 都有一个自己的类加载器,当需要更换一个 Bundle...(配置文件 org.osgi.framework.bootdelegation 中定义)内的类委派给父类加载器加载 3)否则,检查是否在 Import-Package 中声明,如果是,则委派给 Export...负责处理多个 channel 注册(register)的兴趣事件(SelectionKey)集合(底层借助操作系统提供的 epoll()),netty bossgroup 处理 accept 连接(没看明白为什么...以块的方式处理数据,NIO 提供 bytebuffer,分为堆内和堆外缓冲区,读写时均先放到该缓冲区中,然后由内核通过 channel 传输到对端,堆外缓冲区不走内核,提升了性能 13. list 中存放可重复字符串...,如何删除某个字符串 调用 iterator 相关方法删除 倒删,防止正序删除导致的数组重排,index 跳过数组元素问题 14.

62840

【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )

文章目录 一、函数接口形参 二、读取配置文件的逐行遍历操作 1、读取配置文件的逐行遍历操作 2、读取一行数据 3、查找字符 4、删除字符串前后的空格 5、完整代码示例 一、函数接口形参 ---- 函数作用...写出到 char *value 指针指向的内存中 , 将值的长度写出到 int *value_len 指向的内存中 ; 代码示例 : /** * @brief read_config_file 读取配置文件...---- 1、读取配置文件的逐行遍历操作 读取配置文件的逐行遍历操作 : 读取一行文本数据 先判断该行数据中, 是否包含 ‘=’ 字符 然后查找该行数据中 , 是否存在 Key 关键字字符串 如果存在...Key 关键字 , 则继续查找 Key 关键字右侧是否有 ‘=’ 字符 如果找到了 ‘=’ 字符 , 则越过该字符 , 剩下的就是 Value 字符串信息 ; 删除 Value 字符串左右两侧的空格信息...if (p == NULL) { continue; } 4、删除字符串前后的空格 // 获取 Value 起始位置

91240

OSGi跨bundle调用,jaxb-impl异常

问题 环境:JDK11 为什么是JDK11,由于jaxb是作为JDK8的一部分,在JDK11中已经被剥离出来需要单独引入。...项目中使用osgi架构,在处理xml解析的实现中使用了jdk自带的Javax.xml.bind包。...其实jaxb提供了几种构建jaxbcontext的方式,如果都匹配不到,那么会使用系统默认指定的com.sun.xml.internal.bind.v2.ContextFactory来构建,但是不知道为什么指定了一个...;由于该路径下不存在这个类,所以直接报错 按理,jaxb包提供的META-INF/servies/javax.xml.bind.JAXBContextFactory这个文件存在的情况下,为什么还是没被识别到呢...猜测由于OSGi的隔离机制,在跨bundle使用过程中读取不到该配置文件。 解决 由于jaxb-api提供了SPI的扩展机制,基于他的实现很多,所以集成了如下的依赖解决该问题: <!

8010

插件式开发架构综述

这个载体作为应用的主入口,并根据各类插件的配置信息,将编译或打包后的插件加载到主体环境中并执行。开发新的插件,无需调整现有运行主体的代码和二进制包。...2.2 插件的注入、配置和初始化 2.2.1 插件配置信息 配置信息即插件的描述信息,可以在代码中设置,也可以通过XML文件实现,方式不同,目的一致。...提供接口,用于所有业务对象的访问 提供访问接口,可以去创建、删除模型,创建、删除文件,创建删除工程管理目录等文件。 插件以DLL的形式存在,进程内加载运行 4....其中开发的基石Eclipse,就是基于OSGI规范进行开发。 4.1 OSGI简介 OSGi是基于java语言实现的开发期和运行期模块化技术。...OSGI框架定义了大量的OSGI通用服务:日志、配置管理,XML解析等通用服务。 4.2 OSGI整体架构 4.2.1 模块层 模块层可以理解为开发出来的各类插件,一般以bundle的形式出现。

2.8K20

【面试题精讲】JVM-打破双亲委派机制-OSGI模块化

什么是 OSGI 模块化? OSGI(Open Service Gateway Initiative) 是一个为 Java 平台设计的动态模块化系统框架。...为什么需要 OSGI 模块化? 使用 OSGI 模块化可以带来许多好处: 动态性:可以动态地添加、移除和更新模块,而不需要停止整个应用程序。...OSGI 模块化的实现原理 OSGI 模块化的实现原理主要包括以下几个方面: 模块化框架:OSGI 框架提供了一套规范,定义了模块化开发的标准。...OSGI 模块化的缺点 学习曲线较陡:OSGI 模块化的概念相对复杂,需要一定的学习和实践才能熟练掌握。...初期开发成本较高:将应用程序拆分成模块需要额外的工作量,并且需要额外的配置和管理工作。 容器复杂性:OSGI 框架本身也是一个容器,需要提供合适的运行环境和管理工具。 7.

19420

CTK Plugin Framework简介

OSGi规范的核心部分是一个框架,核心框架定义了应用程序的生命周期模式和服务注册。...基于OSGI核心框架定义了大量的OSGi服务:日志、配置管理、HTTP(运行servlet)、XML分析、设备访问、软件包管理、许可管理、用户管理、IO连接、连线管理、Jini和UPnP。...每个服务注册都有一套标准的自定义属性,可以使用过滤器来选择感兴趣的服务。属性也可以被用于应用程序级的其他角色。...此外,如果在删除发布的服务前Plugin停止,框架会帮助删除这些服务。 二、获取服务 一旦服务被发布,服务将对其他Plugin可用。...3.8、懒加载 OSGi技术有很多的机制来保证只有当类真正需要的时候才开始加载插件。例如,插件可以用饿汉式启动,但是也可以被配置为仅当其它插件使用它们时才启动。服务可以被注册,但只有在使用时才创建。

2.4K20

tss: Eclipse 、 Equinox 和 OSGi

Eclipse 、 Equinox 和 OSGi 每个成功的男人背后,都有一个伟大的女人;每个成功的产品后面都有一套强进的架构 ---- 题记 很多Java程序员对Eclipse(日食 ,IBM...起这个名字,Sun大概有意见 )都爱不释手,在JBuilder流行、主流内存配置还在256M的日子里,当我第一次成功运行Eclipse后就把JBuilder彻底请出了我的电脑硬盘。...正如我们谈论一个美女为什么那么美一样,造成美的因素是多方面的 (上次的人物访谈说节目中说:周迅是美女,有个摄影家还用尺子量周迅鼻子到下巴的距离来证明)。...本文的题目还有一个 OSGiOSGi 和 Equinox 的关系是什么呢?...OSGi 中的一个核心概念是: bundles 。

85140

OSGi简介

我们说到OSGi时,根据上下文不同,通常可能指OSGi联盟、OSGi标准或者OSGi框架。...这一系列的标准由OSGi联盟维护,标准的实现通常则称为OSGi容器或者OSGi服务平台。下面我们就分别简单介绍OSGi标准、OSGi的特点、业务主流的OSGi实现与扩展和OSGi联盟。...OSGi各个版本的标准可以从osgi.org中下载。最新标准分为两个部分,OSGi Core和OSGi Enterpise。...OSGi Enterprise主要包括组件模型、分布式服务、Web应用于HTTP Servlet、事件模型、管理与配置服务、名称与目录服务、数据访问、事务支持以及其它一些支持服务。...这些特点包括: ● 切合真实运行环境:OSGi框架是动态的,bundle能够进行即时的更新,服务可以根据需要动态增加或者删除

3.2K50
领券