【Tomcat】web应⽤的部署以及发布
⼀、web项⽬⽂件的⽬录结构
在tomcat中所有的应⽤都是放置在CATALINA_HOME/webapps下。由于Servlet2.2之后的版本规范规定,tomcat中应⽤的⽬录结构需要满⾜固定的格式,这样便于规范⼀致性。
放置在webapps下的⽂件通常是两种格式:⼀种压缩好的项⽬⽂件,⽐如war包!⼀种是正常的⽂件夹。如果是war包项⽬⽂件,tomcat会在启动后⾃动的把它解压缩到当前⽬录,变成可访问的⽂件夹。
项⽬⽂件的⽬录结构如下:
/apps
|------/WEB-INF
|------/classes 编译的字节码⽂件
|------/lib 需要的类库,jar包
------l
|------/META-INF
------l
------普通前端页⾯,jsp等等
1. l ⽂件:
这个⽂件⽐较重要,也叫做部署描述符,⽤于配置web应⽤的相关信息。⽐较常⽤的是,过滤器,servlet,session管理,初始化参数等。
需要注意的是:注意相同项的配置顺序,tomcat会按照配置顺序进⾏执⾏或者加载。需要注意的地⽅⽐如过滤器,还有⼀些页⾯的加载。 
2. classes⽂件夹:
放置编译出的.class⽂件,⽐如你定义的某个包:st.hello.java 经过tomcat的启动发布后,就会在响应的应⽤下的classes⽂件夹下到com/test/hello.class⽂件。类似的servlet, bean, 普通的java类都会编译到此处。
3. lib ⽂件夹:
放置项⽬应⽤的jar包。⽐如使⽤了SSH,在项⽬引⽤了jar包,最后都会放在这⾥。这个⽂件夹下的jar⽂件是不会编译到classes⽂件夹下的。详细信息参考tomcat的类加载机制。
这个⽂件夹下的jar包是属于应⽤⾃⼰使⽤的。tomcat根⽬录下还有⼀个lib⽂件夹,这⾥⾯存放着基本的servlet和jsp需要的jar包。
有时在IDE⾥⾯开发时,会莫名其妙的报⼀些错误。但是这些错误并不影响最后的发布。这是因为在开发时,IDE没有到对应的jar包,这些jar包存放在tomcat中。当应⽤发布时,会⾃动的寻该⽂件夹,也就不会报错了。解决办法就是在开发时,把tomcat的lib⽂件夹加⼊到IDE的编译环境中。
4. l:
常⽤于配置⼀些运⾏时改变的参数,这样tomcat可以定期扫描该⽂件,进⾏相应的操作。
为什么要有这个⽂件呢?因为其他的配置⽂件如l都是tomcat在启动时读取的信息,运⾏时是不能改变的。因此把⼀些动态的信息在这⾥设定就可以运⾏时期动态加载了。常⽤的就是配置数据源JNDI,其中详细的内容会在后⽂介绍配置⽂件的时候讲解。
⼆、web应⽤的部署、发布和测试
1、部署:其实就是把开发完的代码放在tomcat中。
记事本开发,就直接把⽂件拷贝到webapps下。
IDE开发,则需要把tomcat集成到IDE中,并配置代码的映射路径。在IDE中直接右键tomcat--->Add ,如下图:
如果发现不能把左边的项⽬添加到右边,并提⽰错误。则检查servelt的版本。通常是由于servlet与tomcat版本不⼀致导致,如tomcat6 仅⽀持2.5之前的servlet版本,以及1.5之后的JDK版本。
2、发布:就是把应⽤中的代码进⾏编译和组织,使⽤户可以直接访问。tomcat负责把代码进⾏编译组织,最后直接把⼀个可访问的应⽤摆在⽤户⾯前。发布⽅法有下⾯两种:
直接在tomcat中运⾏:运⾏startup.bat或者startup.sh⽂件。运⾏⽅法参考:tomcat启动
在IDE中启动:在server视图中右键tomcat选择start或者直接点击右上⾓的DEBUG或者START图标
servlet和tomcat的关系其中的端⼝8080,可以通过l或者IDE中配置界⾯修改,l⽂档中也给出了线程池和SSL的配置⽅式。也可以在IDE中直接双击server视图中的tomcat选项,在弹出的配置界⾯,修改端⼝号,记得保存。
三、Tomcat部署详解
部署就是把web应⽤开发时的⽂件拷贝到tomcat容器中,并对其进⾏编译等操作,使⽤户可以访问到该应⽤。
1. 热部署和冷部署
冷部署:把WEB部署到Tomcat下,⼀般是把war包放到Tomcat的webapp⽬录下,然后启动Tomcat,这样就完成了项⽬的部署。但在这种⽅式下,Tomcat需要关闭。当⼀个Tomcat下部署了多个项⽬时,如果有其他项⽬正在运⾏,显然不能通过冷部署的⽅式。
热部署是指在你修改项⽬BUG的时候对JSP或JAVA类进⾏了修改在不重启WEB服务器前提下能让修改⽣效。不包括对配置⽂件的修改。
部署项⽬的三种⽅式:
1、直接把项⽬web⽂件夹放在webapps⽬录下。
/helle:项⽬的访问路径>虚拟⽬录
简化部署:将项⽬打成⼀个war包,再将war包拷贝到webapps⽬录,tomcat会⾃动解压war包。
2、配置tomcat\l⽂件
在<host>标签体中配置Context标签,如<Context docBase="D:\hello" path="hehe" />,或者如下:
<Context debug="0" docBase="D:\demo1\web" path="/demo1" privileged="true" reloadable="true"/>
debug属性与这个Engine关联的Logger记录的调试信息的详细程度。数字越⼤,输出越详细。如果没有指定,缺省为0。也就是程序异常时写⼊⽇志⽂件⾥的详细程度。
docBase:项⽬路径,可以使⽤绝对路径或相对路径,相对路径是相对于webapps
reloadable:是否⾃动加载新增或改变的class⽂件。为true时,这类⽂件不需要重启tomcat,其他配置⽂件的修改需要重启tomcat。
3、第三种⽅式和第⼆种差不多,但是不是在l⽂件中添加Context标签,⽽是在 %tomcat_home%\conf\Catalina\localhost中添加⼀个XML⽂件,
如:l,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\demo1\web" reloadable="true" />
2. 热部署和热加载
Tomcat 各容器组件实现的功能主要有:热部署热加载、类加载机制以及 Servlet 规范的实现。
要在运⾏的过程中升级 Web 应⽤,如果你不想重启系统,实现的⽅式有两种,都跟类加载机制有关:
热加载:实现⽅式是 Web 容器启动⼀个后台线程,定期检测类⽂件的变化,如果有变化,就重新加载类。在这个过程中不会清空Session ,⼀般⽤在开发环境。
热部署:原理类似,也是由后台线程定时检测 Web 应⽤的变化,但它会重新加载整个 Web 应⽤。这种⽅式会清空 Session,⽐热加载更加⼲净、彻底,⼀般⽤在⽣产环境。
3. 静态部署和动态部署
在tomcat中有多种部署⽅式:
静态部署:直接拷贝相应的web展开⽬录、或者war包。(展开⽬录:就是tomcat可以直接访问的应⽤⽬录,是未经过压缩的。相反的就是war包,是⼀种经过压缩的web应⽤⽂件)。
动态部署:通过tomcat管理器或者其他⼯具(如TCD,tomcat client deployer)执⾏部署。
如果是使⽤静态部署,或者使⽤tomcat管理器进⾏部署是不需要安装任何东西的。
但是如果要使⽤TCD进⾏部署,那么就需要预先安装JDK和Ant,因为TCD中内置的是Ant的任务构建脚本;然后再下载TCD的部署包。
另外,还需要了解⼀个概念——上下⽂,Context。在tomcat中,上下⽂就是⼀个web应⽤。在之前的tomcat版本中,上下⽂信息是配置在l中的,现在仍然可以,但是官⽅并不推荐这种做法。
上下⽂路径主要在:1 CATALINA_HOME/conf/容器名字/主机名字/应⽤名字.xml2 CATALINA_HOME/webapps/应⽤名字/META-
l
其中路径1中:容器名字(enginename)通常为Catalina、主机名字为localhost。相关内容可以查看l中:<Engine
defaultHost="localhost name="Catalina"> 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。