JBoss 系列八十五: JBoss Modules 简单介绍

JBoss Modules提供了一种替代Java classpath的模块化加载方案,解决了资源浪费和版本冲突问题。每个模块通过module.xml定义,包括模块名称、资源、版本和依赖。相比OSGI,JBoss Modules更简单、小巧,但功能强大,只在需要时加载模块,提高系统性能。文章附带示例代码解释如何使用和配置。
摘要由CSDN通过智能技术生成

概述

从JBoss AS7开始,Classloader这块开始使用全新的JBoss Modules。本文简单介绍说明JBoss Modules的设计思路,以及给出一个例子说明这一设计思路。

JBoss Modules 介绍

我们都知道,Java一直使用classpath的方式来加载各种class和jar的资源。这样的方式会造成许多问题,比如下面这些经常会遇到的问题: 

  •  一个大的项目中,有的classpath当中的资源被加载后可能根本不会被用到,这就造成了系统资源的浪费
  • 同一个classpath当中的资源,可能包含多个不同版本的同一个资源,这就造成了版本冲突,可能会导致整个项目无法运行并且很难进行排错,因为我们的项目可能非常大,里面有成百上千个jar,要想找到相冲突的资源,非常困难
针对这些问题,JBoss Modules都从设计上面给出了解决方案: 
  • 通过使用module.xml描述文件定义模块,在这个描述文件中要包含模块的名称,都包含哪些资源(一般一个模块对应一个jar文件,也可以包含多个jar或其它资源),这些资源的版本号,以及这个模块都依赖于哪些模块。
  • 每一个模块都可以实时地加载或卸掉。这样做有很多好处:首先是资源方面的节省,只有需要的模块才被加载(这一点是通过module.xml中定义的模块之间的依赖关系来实现的),这一方式同时来带的好处是:整个系统的加载速度大大提升了

JBoss Modules 定义 

JBoss Modules 是一个适用于Java的模块化(非分层)类加载以及执行环境的实现。换句话说,不同于Java传统的使用单个类加载器载入classpath中的所有JAR文件,每一个库(library,可以理解为完成某一个功能的一系列jar的组合)成为一个module,该module仅链接其依赖的其他module,而不再依赖其它任何资源。JBoss Module实现了一个线程安全的,快速的,高并发的类加载器委派(delegating)模型,再加上一个可扩展的模块解析引擎,形成一个独特的,简单的,强大的应用程序执行和分布系统。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值