1. 概念
UCL : org.jboss.mx.loading.UnifiedClassLoader3 ,它继承标准的java.net.URLClassLoader,覆盖了标准parent delegation模型以使用共享class和资源仓库
仓库(responsitory): org.jboss.mx.loading.UnifiedLoaderRepository3。
平面模型:为了热deploy模块的需要,JBoss实现了自己的类装载器UnifiedClassLoader3,一般来说,一个顶层的deployment就有一个UnifiedClassLoader3实例为之工作。一个deployment所装载的类,其他 deployment是可见的。全局唯一的UnifiedLoaderRepository3实例用于管理这些类,以及装载它们的UnifiedClassLoader3。UnifiedLoaderRepository3实例和
UnifiedClassLoader3实例是一对多的关系。
写道
There are two levels of scoping, isolation from other deployments, and isolation that overrides the loading of JBoss server classes. With nested modules, only the top level file may specify class loader scoping. If you have a .ear file containing other modules, only scoping specified in the .ear 's META-INF/jboss-app.xml is used. This also applies for any other deployment which contains sub-deployments. For example, if a .sar contains a .war deployment, only the .sar META-INF/jboss-service.xml scoping has effect.
意思是说,scope配置只能是顶级下的配置,比如一个.sar中包含.war都配置了scope,只有.sar下的 META-INF/jboos-service.xml才有效。
META-INF/jboos-service.xml 参数配置:
<!-- Get the flag indicating if the normal Java2 parent first class
loading model should be used over the servlet 2.3 web container first
model.
-->
<attribute name="Java2ClassLoadingCompliance">false</attribute>
<!-- A flag indicating if the JBoss Loader should be used. This loader
uses a unified class loader as the class loader rather than the tomcat
specific class loader.
The default is false to ensure that wars have isolated class loading
for duplicate jars and jsp files.
-->
<attribute name="UseJBossWebLoader">false</attribute>
配置UseJBossWebLoader为false,则webapp的加载通过独立于jboss的classloader进行加载。
WEB-IN/jboss-web.xml , 两种配置方式:
<class-loading java2ClassLoadingCompliance='true'>
<loader-repository>
dot.com:loader=unique-archive-name
<loader-repository-config>
java2ParentDelegaton=true
</loader-repository-config>
</loader-repository>
</class-loading>
或者
<class-loading java2ClassLoadingCompliance='true'></class-loading>
对于第一种配置,webapp将使用JBoss隔离的UCL作为Classloader,并且是否是parent load模型是由其中的java2ParentDelegaton参数决定,java2ClassLoadingCompliance='true'属性将被忽略。
java2ParentDelegaton='true'或者'false'决定了是否采用parent first/child first模型。
分享到:
相关推荐
随着OSGi(Open Services Gateway Initiative)风格的类加载机制逐渐流行,以及新的Java模块和类加载规范的出现,JBoss对自身的类加载层进行了重构,以适应这些新的需求。在JBoss Microcontainer中,类加载层扮演着...
压缩包中的"jboss+classloader分享.ppt"很可能包含了一个关于JBOSS类加载机制的详细讲解,这将有助于理解类加载如何影响RMI的使用,以及如何解决相关的类冲突问题。这个PPT可能涵盖了以下内容: - JBOSS类加载层次...
当需要加载类时,先由父类加载器尝试,如果找不到则递归到更高级别的父类加载器,直到到达根类加载器(Bootstrap ClassLoader)。这种机制确保了类型安全,防止了不同版本的类冲突。 2.2.2 类装载和Java中的类型 ...
在深入探讨JBoss的管理与开发核心技术前,我们先来理解一下本书中提到的关键概念之一:JBoss的JMX实现架构以及类装载器机制。这不仅对于理解和操作JBoss有着重要意义,也是实现热部署等高级功能的基础。 ### JBoss ...
### JBoss管理与开发核心技术(第三版):深入解析JBoss类装载器架构与类型安全性 ...对于开发人员来说,了解这些底层机制是非常重要的,因为它有助于避免常见的运行时错误,并确保应用程序的稳定性和可靠性。
// 使用自定义ClassLoader加载新版本的类 c = dc.findClass(classBytes); } return c; } private boolean isClassModified(String className) { // 检查类文件的修改时间 } private byte[] readClassFile...
在Java中,类是由ClassLoader加载的,当一个类被加载后,如果该类的.class文件被修改,ClassLoader可以重新加载这个修改后的类,从而实现运行时的代码更新。但是,需要注意的是,热更新并非总是可行的,有些复杂的...
在JBoss 3.x中,类加载机制被优化,使得部署单元之间的类共享成为可能。这解决了JBoss 2.x中MBean无法与动态部署的J2EE组件无缝协作的问题,并且赋予了MBeans热部署的能力。热部署意味着在不中断服务的情况下,可以...
2. JBoss ClassLoader Enhancer:研究如何利用这个工具在不重启JVM的情况下更新类文件。 3. ClassPath Hacking:理解如何修改运行时的类路径,实现类的动态替换,从而实现热部署。 四、实战经验 源码中的实战案例将...
5. **ClassLoader**:双亲委派模型是类加载机制的核心,防止不同ClassLoader加载相同的类造成混乱。 6. **设计模式**:通常需要了解单例、工厂、观察者、装饰器、适配器、代理等常见的23种设计模式,以及六大设计...
- **类加载机制**:每个bundle有自己的类加载器,通过特定机制加载其他bundle中的类。 #### JVM调优实践 - **调优工具**:如VisualVM、JProfiler等。 - **案例分析**:例如通过监控发现频繁的Full GC导致性能瓶颈,...
7. 类加载机制:classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw) 8. 虚拟机性能监控与故障处理工具:jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, btrace...
在学习Java的过程中,理解Java的类加载机制非常重要。Java的类加载器(ClassLoader)会按照双亲委派模型来加载类,它包括启动类加载器、扩展类加载器和应用类加载器。在学习中也需要掌握Java反射机制,它允许在运行...
JVM与类加载机制 - **深入理解JVM的工作原理**:包括内存模型、执行引擎、垃圾回收机制等。 - **类加载过程**:了解类是如何被加载到内存中的,包括加载、验证、准备、解析、初始化等阶段。 - **类加载器体系结构**...
5. **ClassLoader**:负责加载Web应用所需的类。在Tomcat中,每个Web应用都有自己的ClassLoader,这有助于防止不同应用之间的类冲突。 6. **Catalina**:这是Tomcat的主要实现,它包含了Servlet容器的所有核心逻辑...
- **层次化 ClassLoader**:这种新的 ClassLoader 结构提高了类加载的灵活性。 - **Legacy API Adapter**:为了兼容旧版本的 API,Drools 提供了一个适配器。 - **KIE 文档**:详细的文档帮助用户更好地理解和...
- **JVM** 通过 `ClassLoader` 来加载类,主要包括 `Bootstrap ClassLoader`、`Extension ClassLoader` 和 `Application ClassLoader`。 ### 24. 线程模型与线程安全 - **线程模型** 有两种:通过继承 `Thread` 类...
- **类加载器**:了解类加载过程,掌握Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader的工作机制。 - **类的反射**:进一步探索Java反射机制,学习如何通过反射动态地创建和操作对象。 - **垃圾...
11. **ClassLoader**:Java的类加载器负责加载类到JVM中。J2EE ClassLoader层次结构更复杂,处理不同层次的应用类加载,确保隔离和安全性。 12. **MVC**:Model-View-Controller模式,模型负责业务逻辑,视图负责...