首页 > 代码库 > Tomcat总结

Tomcat总结

Tomcat文件结构(6.x及以后

bin目录

该目录下存放的是二进制可执行文件。有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;

conf目录

server.xml配置整个服务器信息。例如修改端口号,添加虚拟主机等

catalina.properties:指定tomcatd的类加载器

tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面.

web.xml部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。MIME就是用来说明文档的内容是什么类型的.

context.xml对所有应用的统一配置,通常我们不会去配置它

lib目录:

Tomcat的类库,里面是一大堆jar文件。可以被tomcat和所有的web应用程序共用。

logs目录

这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。

temp目录:

存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!

webApps目录:

存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。

work目录:

运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

 

Tomcat的类加载机制

Tomcat5.x之前可以说是tomcat的正统类加载,在tomcat6.x之后将/common /server /shared合并到同一个目录,即lib目录。

/common目录:类库可以被Tomcat和所有的Web程序共同使用

对应CommomClassLoader

/server目录:类库可以被Tomcat使用,对所有的Web程序都不可见

对应CatalinaClassLoader

/shared目录:类库可以被所有的Web程序共用,Tomcat不可用

对应SharedClassLoader

/WebApp/WEB-INF目录:只对当前Web应用程序可用,Tomcat和其他程序不可用

对应WebAppClassLoader

 

对于Tomcat6.x以后的版本,只有指定了tomcat/conf/catalina.properties配置文件的server.loadershare.loader才会真正建立CatalinaClassLoaderSharedClassLoader的实例,否则用到这两个类加载器的地方全都用CommonClassLoader实例代替。

Tomcat的热部署

JsperLoader的加载范围仅仅是这个Jsp文件所编译出来的那个Class,他出现的目的就是为了被丢弃,当服务器检测到Jsp文件被修改时会替换掉原来的JsperLoader实例,并再建立一个新的Jsp类加载器实现HotSwap.(热部)

Java文件也可以实现热部署:

修改server.xml文件

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  

<!-- docBase指向工程目录  path即Context名称 -->  

<Context docBase="E:/code/workspace/SCM/WebRoot" path="/SCM" reloadable="false"> </Context>  

</Host>  

 

Tomcat总结