首页 > 代码库 > 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.loader和share.loader才会真正建立CatalinaClassLoader和SharedClassLoader的实例,否则用到这两个类加载器的地方全都用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总结