tomcat中部署web应用的几种方式

在tomcat中部署Web应用的方式主要有如下几种:

(1)利用tomcat的自动部署
(2)利用控制台部署
(3)增加自定义的Web部署文件
(4)修改server.xml文件部署Web应用


第一种部署方式是最简单、最常用的方式,只需要将一个web应用复制到Tomcat的webapps下即可。但是如果存在一个tomcat中部署多个应用,并且应用之间启动的过成中需要调用对方的接口,就会存在哪个应用先启动的问题。如何做到某个应用先启动完后,其他应用再启动呢?
第三种部署方式需要在conf目录下新建Catalina目录,再在Catalina目录下新建localhost目录,最后在localhost目录下新建一个 名字任意的xml文件,则发布路径path也必须跟该文件同名,该文件就是web应用的配置文件。如:新建一个aa.xml文件,则路径填写为aa
<Context path="/aa" reloadable="false" docBase="F:/xxx/xxx/xxx" workDir="" privileged="false" sessionCookieName=""></Context>

参数说明:
  (1)以上代码中的workDir表示将该Web应用部署后置于的工作目录(Web应用中JSP编译成的Servlet都可在其中找到),如果使用的Eclipse作为IDE,一般可人为设置在WebApp的work目录下。
如果自定义web部署文件XXX.xml中未指明workdir,则web应用将默认部署在%Tomcat_Home%\work\Catalina\localhost\路径下新建的以XXX命名的文件夹下。( Web应用中JSP编译成的Servlet都可在其中找到

(2)Context path即指定web应用的虚拟路径名。docBase指定要 部署的Web应用的源路径
   debug 则是设定debug level,  0表示提供最少的信息,9表示提供最多的信息
   privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
   reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署。
   antiResourceLocking和antiJARLocking 热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里
第四种部署方式打开%Tomcat_Home%\conf\server.xml文件并在其中增加以下元素:
<Context path="/xxx" reloadable="false" docBase="F:/xxx/xxx/xxx" workDir="" privileged="false" sessionCookieName=""></Context>

第三种部署方式与第四种部署方式的区别:server.xml 和 &{TOMCAT_HOME}\conf\Catalina\localhost。
   1.如果server.xml文件没有配置
   
 <Context path="/aa" reloadable="true" docBase="F:/xxx/xxx/xxx/" > </Context>
而是在${TOMCAT_HOME}\conf\Catalina\localhost目录下配置一个aa.xml文件,里面的内容为
   
<Context path="/aa" reloadable="true" docBase="F:/xxx/xxx/xxx/" > </Context>
[/color]则tomcat直接加载 a.xml文件。
    2. 如果在server.xml文件中配置 ,注意path="/a"
   
 <Context path="/a" reloadable="true" docBase="F:/xxx/xxx/xxx/" > </Context>
在localhost下配置一个a.xml ,注意名字是a.xm则localhost下的a不会加载。 因为server.xml 中的path="/a" 和 localhost目录下的a.xml
重名,只加载一次。
   3. 如果在server.xml文件中配置 ,注意path="/a"
    
<Context path="/a" reloadable="true" docBase="F:/xxx/xxx/xxx/" > </Context>
在localhost下配置一个abc.xml ,注意名字是abc.xml,则两个配置都会加载。
总结:
目前碰到的项目中有使用过第一种方式部署的,也有使用第三种方式进行部署,第一种方式部署同一个tomcat中如果部署多个web项目中,且项目启动过程中需要调用接口,就会存在哪个应用先启动的问题,不然会造成接口调用失败。如何控制web应用的启动顺序,这又是一个问题?

猜你喜欢

转载自xu-nuo.iteye.com/blog/2375073