欢迎光临
我们一直在努力

Tomcat4.1.x以上中类的加载-JSP教程,J2EE/EJB/服务器

建站超值云服务器,限时71元/月

tomcat4.1.x以上中类的加载

快速开始

1.某一个特殊的web应用用到的类或者资源,应该把它解压缩放在这个web应用的web-inf/classes下,或者把jar文件放在这个web应用的web-inf/lib下

2.很多web应用公用的类或者资源,应该把它解压缩放在%catalina_home%/shared/classes下(如果是4.0.x则是%catalina_home%/classes),或者把jar文件放在%catalina_home%/shared/lib下(如果是4.0.x则是%catalina_home%/lib)

预览

象很多应用程序服务器一样,tomcat4.x安装了一种特殊的class loader(这个类继承了抽象类java.lang.classloader),所以它允许容器的不同部分和应用程序访问相应的不同的资源。

在java2(jdk1.2以上)环境中,class loader被抽象成一个树型。当一个class loader被请求装载一个特殊的类或资源时,它把这个请求委派给自己的上一层,当上一层没有找到这个类或资源时,它才在自己的范围内查找并加载。web 应用程序类的装载有细微的不同,但是主要的原理都是一样的。

当tomcat4启动时,它建立如下所示的树型关系。

bootstrap

|

system

|

common

/ \

catalina shared

/ \

webapp1 webapp2 …

详细解释

当tomcat初始化时,它建立了如上图所示的class loader结构。

bootstrap

这个class loader 包含了基本的运行时的类,和一些扩展类(在%java_home%/jre/lib/ext 目录下),这些类都由jvm自动加载。

system

这个class loader 通常用来初始化classpath环境变量的内容,所有的这些类对tomcat内在的类和所有的web应用程序是可见的。但是标准的tomcat4.x启动脚本(%catalina_home%/bin/catalina.sh 或者 %catalina_home%/bin/catalina.bat)忽略classpath,而丛下面的地方装载

1.%catalina_home%/bin/bootstrap.jar-包含了main()方法初始化tomcat4.x server,而且class loader依靠它实现。

2.%java_home%/lib/tools.jar-包含了javac 编译程序,它可以把jsp页面转换为servlet。

common

这个class loader加载的类对tomcat内在的类和所有的web应用程序是可见的,通常web应用程序的类不应该放在这里。

解压后的类或资源放在%catalina_home%/common/classes 目录下,没有解压的类或资源的jar文件放在

%catalina_home%/commons/endorsed 和%catalina_home%/common/lib directories 目录下。这里默认的包含了如下资源和类:

1.jndi.jar – the java naming and directory interface api classes (这个包仅仅在jdk1.2才会被加载,jdk1.3或更高版本由jvm自动加载)。

2.naming-common.jar – tomcat实现的jndi 描述内存中的命名上下文。

3.naming-resources.jar – tomcat实现的特殊的jndi用来表现web应用程序的静态资源。

4.servlet.jar – servlet 和 jsp 用到的类。

5.xserces.jar – xml解析器默认情况下对tomcat内在的类和所有的web应用程序是可见的,如果要对一个特殊的web应用程序用特殊的xml解析器,可以把这个解析器放在/web-inf/lib中。

catalina

这个class loader 为tomcat自己初始化所有的类和资源,这些类和资源对web应用程序来说都是不可见的,所有的解压缩的类和资源都在%catalina_home%/server/classes目录下,所有的压缩的类和资源的jar文件都在%catalina_home%/server/lib目录下。

shared

这个类装载器载入的类和资源能对所有的web应用程序可见(如果tomcat的内置类也要用到这些,则应该把这些放入到common装载器中)。

没有压缩的类和资源放在%catalina_home%/shared/classes目录中,压缩的类和资源的jar文件放在%catalina_home%/lib(为了和前面的版本兼容)或者%catalina_home%/shared/lib目录中。通常包含了以下几个默认包:

1.jasper-compiler.jar – 编译把jsp转换成servlet并编译他们所用到的类。

2.jasper-runtime.jar – 运行由jsp编译成servlet后的class要用到的环境。

3.naming-factory.jar – 为web应用程序提供默认的jndi服务所要用到的类。

webappx

tomcat实例为每一个web应用程序实现一个webapp class loader,所有的解压缩类和资源都放在这个web应用程序的/web-inf/classes目录下,所有的类和资源的压缩文件jar都放在这个web应用程序的/web-inf/lib目录下,这些类和资源只对这个web应用程序是可见的,对其它的web应用程序都是不可见的。

和前面不同的是,当一个web应用程序请求加载一个类时,它首先在这个web class loader范围内加载,而不是和通用的规则一样先从父class loader开始加载。

因此web应用程序类的加载是按一下的顺序的

1.这个应用程序的/web-inf/classes

2.这个应用程序的/web-inf/lib/*.jar

3.jvm 的bootstrap classes r

4.system class loader classses (见上面的描述)

5.%catalina_home%/common/classes

6.%catalina_home%/common/endorsed/*.jar

7.%catalina_home%/common/lib/*.jar

8.%catalina_home%/shared/classes

9.%catalina_home%/shared/lib/*.jar

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Tomcat4.1.x以上中类的加载-JSP教程,J2EE/EJB/服务器
分享到: 更多 (0)

相关推荐

  • 暂无文章