1.JBoss4.0类加载体系结构
SystemClassLoader
|
ExtClassLoader
|
AppClassLoader
|
NoAnnotationURLClassLoader
/ \
UnifiedClassLoader3 ..... UnifiedClassLoader3
|
WebAppClassLoader
2.加载jar包(及class)
SystemClassLoader jre核心jar包
ExtClassLoader jre扩展jar包
AppClassLoader 系统环境变量classpath下的jar包
NoAnnotationURLClassLoader jboss核心jar包
UnifiedClassLoader3 jboss deploy路径下的jar包
WebAppClassLoader jboss web应用的jar包
3.加载策略
NoAnnotationURLClassLoader 父子委托模型策略
UnifiedClassLoader3 扁平策略;所有的UnifiedClassLoader3都拥有同一个类仓库UnifiedLoaderRepository3(这是一个Mbean),UnifiedClassLoader3加载一个class时,首先去仓库里查看是否已缓存,若没有,则尝试自己加载,若自己不能加载,则交给仓库的下一个UnifiedClassLoader3加载,若所有UnifiedClassLoader3都不能加载,则让它们的父亲NoAnnotationURLClassLoader加载。在加载class成功后,则把class存入仓库.
WebAppClassLoader 加载策略与tomcat的webappclassloader同
SystemClassLoader
|
ExtClassLoader
|
AppClassLoader
|
NoAnnotationURLClassLoader
/ \
UnifiedClassLoader3 ..... UnifiedClassLoader3
|
WebAppClassLoader
2.加载jar包(及class)
SystemClassLoader jre核心jar包
ExtClassLoader jre扩展jar包
AppClassLoader 系统环境变量classpath下的jar包
NoAnnotationURLClassLoader jboss核心jar包
UnifiedClassLoader3 jboss deploy路径下的jar包
WebAppClassLoader jboss web应用的jar包
3.加载策略
NoAnnotationURLClassLoader 父子委托模型策略
UnifiedClassLoader3 扁平策略;所有的UnifiedClassLoader3都拥有同一个类仓库UnifiedLoaderRepository3(这是一个Mbean),UnifiedClassLoader3加载一个class时,首先去仓库里查看是否已缓存,若没有,则尝试自己加载,若自己不能加载,则交给仓库的下一个UnifiedClassLoader3加载,若所有UnifiedClassLoader3都不能加载,则让它们的父亲NoAnnotationURLClassLoader加载。在加载class成功后,则把class存入仓库.
WebAppClassLoader 加载策略与tomcat的webappclassloader同