接着上篇 tomcat配置详解,再来学习下如何在tomcat下部署应用

1.部署方式

第一种,最常用,直接把WAR包或者文件夹直接放到webapps目录下面,这时访问路径就是WAR包或者文件夹的名称。

如果想要context为空,即以http://localhost:8080/ 形式访问,只要将WAR包重命名为ROOT.WAR或者将文件夹重命名为ROOT

ps:webapps其实是Host节点appBase属性的值,相对路径是相对于$CATALINA_BASE的,即$CATALINA_BASE/webapps,也可以配置为其他的值,或者一个绝对路径,这样那个目录下的WAR包或者文件夹都会在Tomcat启动时被自动发布

第二种, 在host节点下增加一个Context节点,一个Host节点可以包含多个Context节点。

<Context path="/test" docBase="test"/>其中path就是Context,如果要配置根目录,只有设置path=””;docBase就是文件夹名称或者是WAR包名,如果是相对路径,则是相对于它所在Host节点的appBase

ps:不要将docBase指向webapps下的某个WAR或者文件夹,这样可能会导致应用被多次发布;这种方式发布应用,需要重启Tomcat才能生效

我修改了默认的server.xml,

<Host name="localhost"  appBase="myapps"
unpackWARs="false" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/test" docBase="assetmgmt"/>
</Host>

发现http://127.0.0.1:8080/assetmgmt/或http://127.0.0.1:8080/test/ 都能访问,出现这种情况是由于assetmgmt.war放在了myapps下导致项目被重复部署

第三种,在conf\Catalina\localhost下面添加test.xml,

<?xml version="1.0" encoding="UTF-8"?>

<Context path="" docBase="C:\Users\du\Desktop\to\apache-tomcat-6.0.43_manage\assetmgmt.war" >

</Context>

这样就能通过http://127.0.0.1:8080/test/ 访问了

这种方式其实是在$CATALINA_BASE/conf/{enginename}/{hostname},默认是$CATALINA_BASE/conf/Catalina/localhost下面添加一个{context}.xml,这样就使用这个xml的文件名作为项目path:http://127.0.0.1:8080/{context}/访问,如果{context}有多层,则用#间隔,例如a#b#c.xml,就用http://127.0.0.1:8080/a/b/c/访问

ps:path不用指定,同样也不能把war包放在{hostname}的{appBase}下,不用重启Tomcat部署就能生效

第四种,直接登录tomcat 管理控制台:http://localhost:8080/,使用tomcat manager发布

2.其它部署配置

1.如果想只启动一个tomcat,使用不同端口提供服务,只要增加Service节点并相应改动相关值,

<Service name="Catalina1">
  <Connector connectionTimeout="20000" port="" protocol="HTTP/1.1" redirectPort="8443"/>
  <Engine defaultHost="localhost" name="Catalina1">
    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
      <Context path="/test" docBase="test"/>
    </Host>
  </Engine>
</Service>

2.如果一个站点配置多个应用,可以同过增加host虚拟主机的方式实现

<Host appBase="aaa" autoDeploy="true" name="www.aaa.com" unpackWARs="true"
xmlNamespaceAware="false" xmlValidation="false">
<Context path="/test" docBase="test"/>
</Host> <Host appBase="bbb" autoDeploy="true" name="www.bbb.com" unpackWARs="true"
xmlNamespaceAware="false" xmlValidation="false">
<Context path="/test" docBase="test"/>
</Host>

这样www.aaa.com:8080/test的访问实际是访问$CATALINA_BASE/aaa/test的访问,而对www.bbb.com:8080/test的访问实际是对$CATALINA_BASE/bbb/test的访问

参考文章:

1.Tomcat6上部署应用配置详解

tomcat部署应用的几种方式的更多相关文章

  1. 1.tomcat部署项目的几种方式和weblogic部署方式及一点通讯

      第一种部署方式: 直接使用myeclipse 找到server服务 添加要部署的项目Add Deployment ,然后选中某个项目,首选Exploded Archive(development ...

  2. 关于tomcat部署应用的三种方式

    关于tomcat部署应用虽然不是一个经常的操作,因为一旦选择了一种部署方式,我们其他的应用就会不经大脑的使用这种既定模式, 如果不使用这种部署方式,但是对于其他的部署方式不是很清楚的话,很容易抓瞎,所 ...

  3. 【JavaEE】tomcat部署项目的几种方式 .

    一.静态部署1.直接将web项目文件件拷贝到webapps 目录中     Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用.所以可以将JSP程 ...

  4. Tomcat部署项目的三种方式

    目录 1.下载 Tomcat 服务器 2.启动并部署 Tomcat 服务器 3.Tomcat 的目录结构 4.部署项目的第一种方法(项目直接放入 webapps 目录中) 5.部署项目的第二种方法(修 ...

  5. Tomcat 部署项目的几种常见方式

    转自:https://www.cnblogs.com/yuht/p/5714624.html https://www.cnblogs.com/ysocean/p/6893446.html Tomcat ...

  6. 在Tomcat下部属项目三种方式:

    在Tomcat下部属项目三种方式:       1直接复制:       2. 通过配置虚拟路径的方式    直接修改配置文件 写到tomcat/conf/server.xml     找到<H ...

  7. Tomcat部署项目的几种常见方式

    以前学习的时候只知道在Eclipse或者MyEclipse中发布项目到Tomcat,最近实习时发现不同的项目还有不同的发布方式,所以特地学习了Tomcat发布项目的方式,在此记录下来. 1 直接将we ...

  8. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  9. Java Web开发中用Tomcat部署项目的三种方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ...

随机推荐

  1. https://github.com/mlzboy/spider-impl.git

    Installation - pygit2 0.24.0 documentation Python 2.7, 3.2+ or PyPy 2.6+ (including the development ...

  2. Spring+Quartz 整合一:常规整合

    步骤一: 定时任务需要一个配置文件(spring-mvc-timeTask.xml 随便起名),将其在web.xml中加载 <context-param> <param-name&g ...

  3. POJ 2502 Subway (最短路)

    Subway 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/L Description You have just moved ...

  4. BestCoder Round #68 (div.2) geometry(hdu 5605)

    geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  5. [iOS UI进阶 - 1] 自定义控件

    A.关于Quiartz2D的一些细节 1.UIKit的工具已经封装了上下文引用,所以不用手动获取和渲染 - (void)drawRect:(CGRect)rect { [[UIColor redCol ...

  6. C++中使用函数指针 【瓦特芯笔记】

         在C++类中使用函数指针. 类型定义:      typedef 返回类型(类名::*新类型)(参数表) //类定义 class CA { public: char lcFun(int a) ...

  7. Java常用类(String、StringBuffer、Math、Arrays)

    1.String 操作对象时会重新分配堆内存,栈内存的引用会重新指向新的堆内存 2.StringBuffer(字符串缓存区) 操作的对象一直都是一个 3.Math Math.max(xx,xx); M ...

  8. C#学习笔记(四):委托和事件

    刚开始学习C#的时候就写过了,直接给地址了: 委托.匿名函数.Lambda表达式和事件的学习 委托学习续:Action.Func和Predicate

  9. Sysprep命令详解

    本主题描述了 Windows(R) 8 版本的系统准备 (Sysprep) 工具的命令行语法. 如果你打算创建安装映像以部署到不同的计算机上,则必须运行带有 /generalize 选项的 Syspr ...

  10. MySQL安装详解(V5.5 For Windows)

    前言 这几年一直在用MySQL,并且是Windows+.Net+MySQL的搭配,用MyISAM引擎支持过单表每天千万以上的数据递增,TB级的数据MySQL游刃有余.最近在做一个较大并发的项目,尝试了 ...