[转]部署war包到tomcat的几个问题
2015-08-17 14:46
281 查看
1. war包是什么?
按照我的理解,它仅仅是个压缩包,解压后(别告诉我你不会解压)你就发现里面就包含了"一个WEB项目"在发布到web容器时所该包含的所有东西. 简单来说你可以理解为是一个.zip或者是.rar的压缩文件,只是它们的压缩算法不一样,并且.war可以被tomcat自动解压.
2. war包怎么来的?
目前来说,我所知道的也是我唯一知道方式是通过maven进行打包生成的. 如果还有其它方式,望大牛们告知.
3. war包在部署到tomcat时应该放在哪个目录?
很多教程里面说到的是拷贝到tomcat根目录下的webapps文件夹里面就可以,当然,这个是没有错的. 对于这个问题,我们先看下tomcat的配置文件: ${CATALINA_HOME}/conf/server.xml , 找到这一段(这里是默认配置):
?
我们要理解的几个节点和属性的作用:
1) <Host></Host>节点
故名思意,主机的意思,Tomcat中支持配置多个虚拟主机,默认的就是这个"localhost".
2) <Host>中的"name"属性
这里就是配置多个虚拟主机时的唯一标识,填写的是域名,表示当访问哪个域名时会到该虚拟主机下找web应用.
3)<Host>中的"appBase"属性
这个是设置虚拟主机存放web应用的目录,填写的是目录,可以是绝对路径也可以是相对于tomcat根目录的相对路径,注意哦,这个属性跟下面配置war路径的时候也有一定的联系的.
后面的两个属性从字面上也好理解了,一个是unpackWARs:解压war文件, 一个是autoDeploy:自动发布.
大概理解了这几个属性后,我们可以尝试在tomcat的配置文件中自己配置一个新的"虚拟主机"(忽略默认的,尝试点新鲜的),并将war发我们的新建的虚拟主机的发布目录里,在配置文件(${CATALINA_HOME}/conf/server.xml)中加入:
?
其中<Context></Context>节点的属性有必要说一下:
1)属性"docBase"
配置某一个war包文件的路径. 比如:
Ⅰ) 如果我的my-web.war包在"D:\myWebapps\my-web.war, 则此时docBase只需设置为: docBase="my-web"
Ⅱ) 如果我的my-web.war包在"D:\myWebapps\war\my-web.war, 则此时docBase只需设置为: docBase="/war/my-web"
(注意:这里只需要写war的文件名字即可,后缀可不要,有些教程是有加后缀的,测试过也可以)
2) path用于配置虚拟路径,默认是"",也就是访问 "test.yourdomain.com" .
按照上面的配置,启动tomcat后,打开D:\myWebapps时,你会发现已经将my-web解压了,此时会解压成了两个文件夹,如图:
看到这个图,也就提出我的第四个疑问.
4. 为什么会一个war文件会解压成两个文件夹?
打开两个文件夹, 发现里面的文件是一样的.
原来tomcat的appBase目录里面必需有一个默认的访问目录ROOT,如果没有,tomcat会将<Context>中path=""所指向的war文件给解压到ROOT文件夹中. 另外,tomcat还会将appBase下的demo.war文件解压到和它同名的demo文件中,这就出现了两个文件夹.
最后的建议:
① war文件最好不要文件<Host></Host>中appBase目录的根目录中.
所以一些教程里面说直接拷贝到默认配置中的webapps文件中,个人感觉是不太好的,当然也不是不可以,具体看怎么配置了,哈哈.
②建议将war放到appBase的二级目录里,像这样:
?
配置的时候就变成这样了:
?
这样的配置,在启动tomcat后,就只会生成ROOT文件夹,并且默认访问的就是你的my-web.war的web应用.
按照我的理解,它仅仅是个压缩包,解压后(别告诉我你不会解压)你就发现里面就包含了"一个WEB项目"在发布到web容器时所该包含的所有东西. 简单来说你可以理解为是一个.zip或者是.rar的压缩文件,只是它们的压缩算法不一样,并且.war可以被tomcat自动解压.
2. war包怎么来的?
目前来说,我所知道的也是我唯一知道方式是通过maven进行打包生成的. 如果还有其它方式,望大牛们告知.
3. war包在部署到tomcat时应该放在哪个目录?
很多教程里面说到的是拷贝到tomcat根目录下的webapps文件夹里面就可以,当然,这个是没有错的. 对于这个问题,我们先看下tomcat的配置文件: ${CATALINA_HOME}/conf/server.xml , 找到这一段(这里是默认配置):
?
1) <Host></Host>节点
故名思意,主机的意思,Tomcat中支持配置多个虚拟主机,默认的就是这个"localhost".
2) <Host>中的"name"属性
这里就是配置多个虚拟主机时的唯一标识,填写的是域名,表示当访问哪个域名时会到该虚拟主机下找web应用.
3)<Host>中的"appBase"属性
这个是设置虚拟主机存放web应用的目录,填写的是目录,可以是绝对路径也可以是相对于tomcat根目录的相对路径,注意哦,这个属性跟下面配置war路径的时候也有一定的联系的.
后面的两个属性从字面上也好理解了,一个是unpackWARs:解压war文件, 一个是autoDeploy:自动发布.
大概理解了这几个属性后,我们可以尝试在tomcat的配置文件中自己配置一个新的"虚拟主机"(忽略默认的,尝试点新鲜的),并将war发我们的新建的虚拟主机的发布目录里,在配置文件(${CATALINA_HOME}/conf/server.xml)中加入:
?
1)属性"docBase"
配置某一个war包文件的路径. 比如:
Ⅰ) 如果我的my-web.war包在"D:\myWebapps\my-web.war, 则此时docBase只需设置为: docBase="my-web"
Ⅱ) 如果我的my-web.war包在"D:\myWebapps\war\my-web.war, 则此时docBase只需设置为: docBase="/war/my-web"
(注意:这里只需要写war的文件名字即可,后缀可不要,有些教程是有加后缀的,测试过也可以)
2) path用于配置虚拟路径,默认是"",也就是访问 "test.yourdomain.com" .
按照上面的配置,启动tomcat后,打开D:\myWebapps时,你会发现已经将my-web解压了,此时会解压成了两个文件夹,如图:
看到这个图,也就提出我的第四个疑问.
4. 为什么会一个war文件会解压成两个文件夹?
打开两个文件夹, 发现里面的文件是一样的.
原来tomcat的appBase目录里面必需有一个默认的访问目录ROOT,如果没有,tomcat会将<Context>中path=""所指向的war文件给解压到ROOT文件夹中. 另外,tomcat还会将appBase下的demo.war文件解压到和它同名的demo文件中,这就出现了两个文件夹.
最后的建议:
① war文件最好不要文件<Host></Host>中appBase目录的根目录中.
所以一些教程里面说直接拷贝到默认配置中的webapps文件中,个人感觉是不太好的,当然也不是不可以,具体看怎么配置了,哈哈.
②建议将war放到appBase的二级目录里,像这样:
?
?
转自
war包部署到tomcat的疑问
相关文章推荐
- how tomcat works 札记(两)----------一个简单的servlet集装箱
- Tomcat & Nginx
- 服务器上配置多个tomcat
- 基于Tomcat7、Java、WebSocket的服务器推送聊天室
- eclipse集成tomcat,完成一个web实例
- Apache + Tomcat + JK 集群
- CentOS上安装Tomcat7
- Tomcat Class loader
- 启动tomcat7.0时报错:unable to start within 45 seconds. If the server requires more time, try increasing t
- Tomcat创建虚拟目录和程序热部署
- Tomcat中web.xml的配置
- 大家来找茬-SpringMVC中Tomcat正常启动,始终访问不了Controller,出404错
- Mac下配置Tomcat
- tomcat环境搭建问题汇总
- 如何在自己的Windows系统上 架设服务器并开发网站,然后连入外网供外界访问?(JDK+Tomcat+花生壳)
- 关于 tomcat 集群中 session 共享的三种方法
- nginx整合tomcat
- linux下tomcat的安装
- jdk&tomcat环境变量配置及同时运行多个tomcat方法
- 利用jenv安装maven, tomcat,zookeeper等