`
jbosscn
  • 浏览: 149780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JBoss Modules - Dependecies - Imports and Exports

 
阅读更多

本质上,一个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 章节。

 

 

分享到:
评论

相关推荐

    jboss-threads-3.1.0.Final-API文档-中文版.zip

    赠送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....

    jboss-annotations-api_1.3_spec-2.0.1.Final-API文档-中英对照版.zip

    赠送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;...

    jboss-logging-3.3.2.Final-API文档-中文版.zip

    赠送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....

    jboss-logging-3.4.1.Final-API文档-中文版.zip

    赠送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....

    jboss-modules-1.15.GA.jar

    当时遇到这个问题org.jboss.naming.remote.client.InitialContextFactory(WFLYNAM0027 : ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory) 去外网下载了这个,成功通过了

    jboss-modules-1.9.2.Final.jar

    jboss-modules-1.9.2.Final.jar,最新JBoss程序,Linux、Ubuntu下适用。

    jboss-logging-3.4.3.Final-API文档-中文版.zip

    赠送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....

    jboss-as-sprint-int-5.0.0.GA.jar jboss-spring-int-vfs.jar

    解决jboss启动报错vfs解析异常问题,缺少依赖包问题。包含jboss-as-sprint-int-5.0.0.GA.jar jboss-spring-int-vfs.jar

    JavaEE源代码 jboss-common

    JavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-...

    jboss-eap-6.4.0.zip

    jboss-eap-6.4.0.zip

    JBossTools-ALL-win32-3.0.0.CR2

    JBossTools-ALL-win32-3.0.0.CR2-

    jboss-logging-3.1.0.CR2

    有人向我要,所以传上来! 错误信息:java.lang.ClassNotFoundException: org.jboss.logging.BasicLogger 解决办法:加入jboss-logging-3.1.0.GA.jar就好了。hibernate4日志机制改了

    JavaEE源代码 jboss-jmx

    JavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-...

    JBossIDE-1.4.1

    JBossIDE-1.4.1-e30 JBossIDE-1.4.1-e30 JBossIDE-1.4.1-e30

    jboss-logging-3.4.3.Final-API文档-中英对照版.zip

    赠送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-cache

    JavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源代码 jboss-cacheJavaEE源...

    JavaEE源代码 jboss-system

    JavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-systemJavaEE源代码 jboss-...

    jboss-websocket-api_1.1_spec-2.0.0.Final-API文档-中文版.zip

    赠送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.1.0

    jboss-eap-7.1.0 jboss-eap-7.1.0 jboss-eap-7.1.0 jboss-eap-7.1.0 jboss-eap-7.1.0

    jboss-as-sprint-int-5.0.0.GA.jar 和 jboss-spring-int-vfs.jar

    从Tomcat移植到JBoss所需要新增的两个jar包:jboss-as-sprint-int-5.0.0.GA.jar 和 jboss-spring-int-vfs.jar

Global site tag (gtag.js) - Google Analytics