本质上,一个module就是本地和输入资源的聚合。本地资源构成模块本身;一般来源于JAR文件或者本地文件系统上的目录。可输入的资源包括任何模块外部的模块 class loader可见的东西,根据对其它模块的依赖来确定。我们使用 imports(输入) 来表示这个聚合。
除了 imports 概念外,一个 module可要定义它自身被别的module依赖时,哪些是可见的。这个集合总是模块可输入资源集合的子集,被称作模块的 exports(输出)。当一个 module 和别的 module 建立起依赖关系时,输入的资源仅由依赖 module 的输出资源构成。
当一个模块从一个依赖的模块中输入了资源,然后输入同样的资源(或者其子集)给依赖它的module,这称为将依赖 re-export(再次输出)。
为了限制从一个依赖 module中可以输入什么资源,或者限制什么资源被输出或者再次输出给依赖其的 module,就需要采用 filter(过滤器),这是下面的子章节要关注的焦点。
Import filtering (输入过滤)
大部分模块依赖的资源可以没有任何限制的输入,除了一个例外:META-INF 目录以及其下所有的子目录被排除在 import 之外。也就是说,当一个被依赖的模块没有定义任何 filters 或者其他的属性,就像下面的代码片段:
<
module
name
=
"org.jboss.logging"
/>
|
那么,依赖于该模块的 imports 被配置成像下面的规则:
- 不能 import META-INF
- 不能 import META-INF
的子目录(包括 META-INF/services
)
- 可以 import 其它任何资源
需要import META-INFO/services这个目录是非常普遍的,这可以通过很多现有APIs和使用JDK java.util.ServiceLoader
API的框架来发现服务。因为这个原因,可以通过指定默认的filter在排除 META-INF子目录之前,应该包含 META-INF/services。
Filter元素对path set还有更进一步的限制。当过滤输入时,不仅影响哪些 classes 和 resources 可以被输入,而且也影响那些输入的资源的再次输出(re-export)。
关于如何在 module.xml 中配置 import filters ,可以参考 Moudle descriptors 一章。如何在 MANIFEST.MF 中配置 service imports,参考 Manifest module information 一章。
Export filtering (输出过滤)
默认情况下,一个 module 仅能输出它本地定义的资源。特别是,module输入的资源一般不被再次输出。然而,可以通过为依赖指定一个不同的 export filter来改变这个策略。
在 module.xml描述文件或者 MANIFEST.MF JAR依赖 manifest属性文件中,有一个简单的 "export" 标记,可以为依赖来指定不同的策略,改变为再次输出(re-exports)大多数该依赖的资源(并不是所有), 而不是默认的 "reject-all" filter 策略。这个 filter 将包括除了 META-INF目录以及其子目录下的资源之外的任何东西。
在特定情况下,为了能够在特殊的 module configuration 中使用 java.util.ServiceLoader, 一个依赖要和 META-INF/services一起被再次输出。在module.xml 中有一个快捷的标记来做这个事情,而不用需要改动 filter。 关于这个属性更多的信息,可以参考模块描述一章中的 services attribute section
章节。
其它关于 re-export 的配置信息,需要完整过滤器规范。关于如果用 xml 配置 filter,请参考 Module Descriptor 的 filters section
章节。
分享到:
相关推荐
赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....
赠送jar包:jboss-threads-3.1.0.Final.jar; 赠送原API文档:jboss-threads-3.1.0.Final-javadoc.jar; 赠送源代码:jboss-threads-3.1.0.Final-sources.jar; 赠送Maven依赖信息文件:jboss-threads-3.1.0.Final....
赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...
赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....
赠送jar包:jboss-logging-3.3.2.Final.jar; 赠送原API文档:jboss-logging-3.3.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.3.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.3.2.Final....
当时遇到这个问题org.jboss.naming.remote.client.InitialContextFactory(WFLYNAM0027 : ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory) 去外网下载了这个,成功通过了
jboss-modules-1.9.2.Final.jar,最新JBoss程序,Linux、Ubuntu下适用。
"jboss-as-sprint-int-5.0.0.GA.jar" 和 "jboss-spring-int-vfs.jar" 是与JBoss应用服务器相关的两个关键组件,主要用于Spring框架与JBoss服务器的集成以及虚拟文件系统(Virtual File System,VFS)的支持。...
JavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-...
标题中的"jboss-as-sprint-int-5.0.0.GA.jar"和"jboss-spring-int-vfs.jar"就是这样的两个关键组件,用于帮助从Tomcat顺利过渡到JBoss环境。 首先,我们来详细了解一下`jboss-as-sprint-int-5.0.0.GA.jar`。这个...
赠送jar包:jboss-websocket-api_1.1_spec-2.0.0.Final.jar; 赠送原API文档:jboss-websocket-api_1.1_spec-2.0.0.Final-javadoc.jar; 赠送源代码:jboss-websocket-api_1.1_spec-2.0.0.Final-sources.jar; 赠送...
JavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-...
赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....
JavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源...
JavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-...
赠送jar包:jboss-websocket-api_1.1_spec-2.0.0.Final.jar; 赠送原API文档:jboss-websocket-api_1.1_spec-2.0.0.Final-javadoc.jar; 赠送源代码:jboss-websocket-api_1.1_spec-2.0.0.Final-sources.jar; 赠送...
【JBoss EAP 7.2.0:企业级应用平台详解】 JBoss EAP(Enterprise Application Platform)是Red Hat公司推出的一款开源、基于Java EE(现在称为Jakarta EE)的应用服务器,它为企业级应用程序提供了稳定、安全和可...
赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...
赠送jar包:jboss-logging-3.4.2.Final.jar; 赠送原API文档:jboss-logging-3.4.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.2.Final....
jboss-marshalling-1.3.0.CR9.jar jboss-marshalling-serial-1.3.0.CR9.jar