JBoss Modules - 介绍

JBoss Modules 提供了一种模块化的类加载机制,不同于传统的单一类加载器方式,它允许每个库作为一个独立的模块,并仅依赖其所需要的其他模块。这种设计简化了应用程序的管理和部署过程,提高了执行效率。
部署运行你感兴趣的模型镜像

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

 

JBoss Modules被设计为能够和现有的library或者application一起工作而不需要任何的修改,这是因为它简单命名和解析策略。不像OSGi,JBoss Modules并没有实现一个容器;而是一个瘦的启动包装器,在一个模块化环境执行一个应用。这时,你的应用接管控制权,模块化则准备好在需要时装载和连接各模块。此外,只有当一个模块被依赖的时候,它才会被装载(并不会为了解析目的而装载),这意味着,模块化应用程序的性能仅依赖于实际使用的模块数(并在模块被使用的时候),而不是系统中的模块总数目。并且,模块可以在任何时候由用户卸载。

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

### 详解 `jboss-deployment-structure.xml` 文件的作用与配置 `jboss-deployment-structure.xml` 是 JBoss EAP 或 WildFly 等基于 JBoss Modules 架构的应用服务器中用于控制模块依赖关系和类加载行为的重要配置文件。该文件允许开发者在不修改 `MANIFEST.MF` 和 `jboss-web.xml` 的前提下,精确控制模块依赖、隐藏某些类路径资源、覆盖默认模块版本等,从而避免类冲突和依赖管理混乱的问题。 #### 模块依赖管理 在 JBoss 中,模块(Module)是组织类和资源的基本单位,每个模块都有一个唯一的名称和版本。通过 `jboss-deployment-structure.xml` 可以显式声明部署单元(如 WAR、EAR)所需的模块依赖。例如,若应用依赖特定版本的 `org.hibernate` 模块,可在配置文件中添加如下内容: ```xml <jboss-deployment-structure> <deployment> <dependencies> <module name="org.hibernate" slot="main" /> </dependencies> </deployment> </jboss-deployment-structure> ``` 此配置确保部署的应用程序使用指定模块,而不是服务器默认提供的版本,避免因版本不一致导致的运行时错误。 #### 隐藏服务器提供的模块 某些情况下,应用可能自带某些库(如日志框架、JPA 提供商等),不希望使用服务器提供的模块。此时可以使用 `<exclusions>` 标签排除特定模块,防止其被自动引入: ```xml <dependencies> <module name="org.apache.log4j" /> <exclusions> <module name="org.jboss.logging" /> </exclusions> </dependencies> ``` 该配置会阻止 JBoss 自动加载 `org.jboss.logging` 模块,确保应用使用其自带的日志实现。 #### 控制子部署的类加载行为 对于 EAR 包中的多个子部署(如多个 WAR 或 EJB JAR),可以通过 `<sub-deployment>` 标签分别控制其类加载策略。例如,可以为每个子部署设置独立的类加载器,防止类冲突: ```xml <sub-deployments-isolated>true</sub-deployments-isolated> ``` 此配置确保每个子部署使用独立的类加载器,避免共享类导致的冲突问题。 #### 覆盖默认模块版本 JBoss 提供了多个版本的模块供部署使用,若需使用非默认版本的模块,可在 `<module>` 标签中指定 `slot` 属性。例如,使用 `org.jboss.as.web` 的 `1.1` 版本而非默认的 `main` 版本: ```xml <module name="org.jboss.as.web" slot="1.1" /> ``` 该配置确保部署时加载指定版本的模块,避免因版本差异引发的兼容性问题。 #### 示例完整配置 以下是一个典型的 `jboss-deployment-structure.xml` 文件示例,展示了模块依赖、排除和子部署隔离的配置方式: ```xml <jboss-deployment-structure> <deployment> <sub-deployments-isolated>true</sub-deployments-isolated> <dependencies> <module name="org.hibernate" slot="main" /> <module name="org.apache.log4j" /> <exclusions> <module name="org.jboss.logging" /> </exclusions> </dependencies> </deployment> </jboss-deployment-structure> ``` 此配置适用于需要使用自定义 Hibernate 和 Log4j 实现,同时避免使用 JBoss 提供的 `org.jboss.logging` 模块的场景。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值