Weblogic10的ClassLoading 机制 概述

来源:岁月联盟 编辑:zhuzhu 时间:2009-05-01

  首先,我们来回顾一下Java ClassLoader机制, Java ClassLoader 顾名思义,就是从硬盘,网络等加载Class。JVM采用继承代理机制保护系统核心的Class不被篡改及出现ClassCastException异常。具体可参阅以前我写的关于JVM类加载的一篇文章。

  下图就是Weblogic类加载实例。 在Weblogic中,Application就是你部署的应用,可以是一个EAR包,可以是Web 应用的War包。当我们部署一个Application,Weblogic Server 自动创建一个继承关系的ClassLoader . 顶层是System ClassPath Loader。底层的Root ClassLoader 加载任何EJB jar包,child ClassLoader 加载每一个Web 应用的War包。也就是说EJB的Jar包是优与War加载的。这是因为在一般的应用,Web Application 调用EJB。所以JSP Servlet 可以调用父类加载器加载的EJB。

Weblogic10的ClassLoading 机制 概述

   下图是在一个标准的Application中ClassLoader的关系。该加载机制优势在于 WebApplication1 WebApplication2调用EJB时候可以通过reference ,大家都知道通过reference 调用EJB的效率是非常高的。

Weblogic10的ClassLoading 机制 概述

   对于这种常规的ClassLoader 关系,意味著当你要更改EJB1或者EJB2时,我们必须重新部署WebApplication1 WebApplication2。

   Weblogic 也给我们提供在weblogic-application.xml.自定义的ClassLoader。不过对于我们一般的应用是没有必要自定义ClassLoader。