将Java web应用部署到Tomcat 及部署到Tomcat根目录 的三种方式

Tomcat做为Servlet/JSP容器(服务器)挺不错的,开源免费,须要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,可是却没有实现全部JavaEE规范,因此咱们仍是应该规范说法,称Tomcat为一个JavaWeb服务器,而不是JavaEE服务器linux

咱们使用IDE部署JavaWeb项目基本上都是一键完成,这是IDE给咱们该来的好处,可是仍是有必要了解一下部署项目的细节web

要将JavaWeb应用部署到Tomcat,须要显式或隐式定定义一个Tomcat上下文。在Tomcat中,每个Tomcat上下文都表示一个Web应用程序。因此咱们也将分为隐式和显式两种方式来进行总结apache

显式部署

显式部署总的来讲就是以目录结构的方式部署,不打包,只要项目根目录(Maven为webapp  普通项目为webRoot/webContent)有WEB-INF(WEB-INF下有classes,jar包,配置文件),有静态资源(HTML,CSS,JS ,图片等)便可。再经过一个在Tomcat中的配置文件来将咱们的程序发布出来。tomcat

显式部署有两种方式:服务器

  • 在Tomcat的conf/Catalina/localhost目录下建立一个XML文件
  • 在Tomcat的conf/server.xml文件中添加一个Context元素

方式一

若是决定给每个上下文都建立一个XML文件(第一种方式),那么这文件名就很重要了,由于上下文路径就是从这个文件名的衍生获得的。例如,将一个Demo1.xml文件放在conf/Catalina/localhost目录下,那么这个应用程序的上下文路径就是Demo1,访问的URL就为:http://localhost:8080/Demo1markdown

这个上下文文件只有一行代码:app

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>

这里的docBase是必须的属性,它定义了应用程序的位置。reloadable属性是可选的,若是存在而且值为true,那么一旦程序中Java类文件或者是其余资源文件有任何添加,减小或者是更新,TOmcat均可以检测到,而且从新加载该应用程序webapp

当把上下文文件添加到Tomcat的指定目录下,Tomcat就会自动加载应用程序。当删除这个文件时,Tomcat就会自动卸载应用程序post

方式二

在conf/server.xml文件中的Host标签下添加一个Context元素测试

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
      
      <Context path="/Demo2" docBase="d:/Demo1" reloadable="true"></Context>

</Host>

以第一种方式不一样之处在于此处定义上下文须要给上下文路径定义path属性,这个path属性的值表示须要访问的项目名,访问的URL就为:http://localhost:8080/Demo2

通常来讲,不建议经过server.xml来管理上下文,由于修改后只有重启Tomcat后,配置才能生效。不过,若是有多个应用程序须要测试,使用这种方式或许更为方便,由于能够在一个文件中同时管理全部的应用程序

隐式部署

方式三

隐式部署真是太方便了,很是建议使用这种方式部署项目。经过将一个war文件或者整个应用程序复制到Tomcat的webapps(Tomcat默认的部署项目位置,能够在server.xml文件中修改,但不建议修改)目录下,启动服务器就能够了

**将应用部署到Tomcat根目录的三种方法

将应用部署到Tomcat根目录的目的是能够经过“http://[ip]:[port]”直接访问应用,而不是使用“http://[ip]:[port]/[appName]”上下文路径进行访问。

方法一:(最简单直接的方法)

删除原 webapps/ROOT 目录下的全部文件,将应用下的全部文件和文件夹复制到ROOT文件夹下。

方法二:

删除原webapps/ROOT 目录下的全部文件,修改文件“conf/server.xml”,在Host节点下增长以下Context的内容配置:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    ......
    <Context path="" docBase="C:/apache-tomcat-6.0.32/myapps/bc.war"></Context>
</Host>

注意:

1)path 的值设置为空;
2)应用不要放到tomcat的webapps目录下(如上述配置是放到自定义的文件夹myapps内的),不然访问时路径会有问题;
3)docBase指定到绝对路径。

如配置此设置后重启tomcat,若是docBase指向的是war文件,则会自动将war解压到 webapps/ROOT 目录;若是docBase指向的是应用已解压好的目录,如 docBase=”C:/apache-tomcat-6.0.32/myapps/bc” ,则tomcat不会生成 webapps/ROOT 目录(这种状况下,这样就能够不用删除 webapps/ROOT 目录,但 webapps/ROOT 目录内的内容是没法访问的),访问时将直接使用docBase指定的目录。

方法三:

与方法二相似,但不是修改全局配置文件“conf/server.xml,而是在“conf/Catalina/localhost”目录下增长新的文件”ROOT.xml”(注意大小写),文件内容以下:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="C:/apache-tomcat-6.0.32/myapps/bc.war" reloadable="true">
</Context>

注意:

Tomcat5.0如下版本在d:/Tomcat/conf/Catalina/localhost目录下会自动生成了一个ROOT.xml文件,可是5.0以上版本已再也不生成此文件。

参考资料:
[1].http://www.linuxidc.com/Linux/2011-12/48939.htm
[2].http://nj-apple-tree.iteye.com/blog/1635953

相关文章
相关标签/搜索