在server.xml中添加<Context>元素,配置如下:

<Context docBase="app" path="" reloadable="false" />

在<Context>配置中包含如下信息:
1. 配置docBase值为:docBase="app"或者docBase="app.war";
2. path为空,表示app为tomcat默认应用;
同时,将app.war部署在CATALINA_HOME/webapps/路径下。

1.如果在部署app时删除了CATALINA_HOME/webapps/路径下的ROOT目录(即删除tomcat默认应用),
那么在tomcat启动时,会首先在CATALINA_HOME/webapps/路径下创建名称为ROOT的目录,然后将文件app.war中的内容拷贝到ROOT目录下,开始部署ROOT应用程序。
接下来才会解压app.war,再部署app应用。
从tomcat的启动日志可以很容易知道,在这种情况下app应用会被加载2次,一次是部署ROOT时加载的,另一次是部署app本身加载的。
因此,访问应用可以带应用上下文路径,也可以不用带上下文路径,即:http://host:port/xxx或者http://host:port/app/xxx。

2.如果在部署app时不删除CATALINA_HOME/webapps/路径下的ROOT目录,即已经存在默认应用程序。
此时在tomcat启动时,会先部署ROOT默认应用(注意:已经存在ROOT应用,不再会拷贝app.war文件内容到ROOT下)。然后解压app.war,部署app应用。显然,app应用只被部署一次!
因此,在这种情况下,即便配置了<Context>元素的path为空,但是访问app应用时还是必须携带应用上下文路径,即:http://host:port/app/xxx。

实际上,tomcat部署应用程序的顺序是这样的(tomcat启动日志):
1.最先部署CATALINA_HOME/webapps/路径下的ROOT应用,该应用为tomcat的默认应用程序,访问时不用带应用上下文路径,即:http://host:port/xxx。
2.然后再按照字母顺序升序依次部署其他应用程序,如:appA,appB等等。

【参考】
http://stackoverflow.com/questions/7276989/how-to-set-the-context-path-of-a-web-application-in-tomcat-7-0 How to set the context path of a web application in Tomcat 7.0

tomcat部署应用时设置context path为空的上下文路径问题的更多相关文章

  1. Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life

    Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life ...

  2. tomcat部署项目时省略项目名

    大家也许知道在eclipse上通过新建server来部署项目到tomcat,并且通过server来管理项目的启动配置.server会自动创建启动该项目的xml 如: <Context docBa ...

  3. Tomcat部署启动时发生错误

    Tomcat启动后项目地址显示404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示. 严重: ContainerBase.addChild: start: org.apache. ...

  4. svn更新项目之后,项目报错一大堆并且tomcat部署项目时找不到项目

    原因是:svn更新项目以后jdk路劲不对,需要使用自己安装的jdk,即可.具体步骤如下 第一步:右击项目-->Build path-->Configure Build path... 第二 ...

  5. Tomcat部署项目时,发布的项目页面部分乱码,且页面渲染文件也是乱码。

    catalina.bat中必须设置为UTF-8,如果我不设置为UTF-8,页面接收到的就是乱码了,尝试过各种UTF-8的调试,都无解,最后还是只能在catalina.bat的set "JAV ...

  6. tomcat部署项目时 报错Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules

    Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules 解决方法: 找到文件 .set ...

  7. 启动tomcat部署项目时 ContainerBase.addChild: start:

    严重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component ...

  8. 使用Tomcat部署应用

    概述 一个简单的web项目下载地址:https://files.cnblogs.com/files/Mike_Chang/hello.rar Tomcat部署应用三种方法. 方法一 将一个WAR文件或 ...

  9. 从零搭建SSM框架(四)手动实现Tomcat部署

    发布War包 Windows环境部署 增加如下配置 <Context path="/" docBase="cnki" debug="0" ...

随机推荐

  1. Java List 遍历

    //方法1 Iterator it1 = list.iterator(); while(it1.hasNext()){ System.out.println(it1.next()); } //方法2 ...

  2. notepad++设置(不断更新)

    1.主题设置 主题名称:Obsidian 字体字号:Courier New 10 设置方法: 设置---语言格式设置---选择主题,同时勾选“使用全局字体”“使用全局字体大小 补充一点: 修改两处地方 ...

  3. Apache动态加载模块

    添加步骤:如要额外安装cgi,先找到mod_cgi.c及mod_cgid.c.一般在apache安装包目录下,如 ./httpd-2.2.25/modules/generators .#编译安装 cg ...

  4. multiset和set

    set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...

  5. js 获取对象属性个数

    js 获取对象属性个数 方法一: var attributeCount = function(obj) { var count = 0; for(var i in obj) { if(obj.hasO ...

  6. 牛客网NOIP赛前集训营-提高组(第一场)

    牛客的这场比赛感觉真心不错!! 打得还是很过瘾的.水平也比较适合. T1:中位数: 题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个序列,可以由数对[l ...

  7. java面试——问题回溯

    背景:用来记录面试过程中遇到的问题,在这里进行记录,下次不要犯同样的错误. 迪普科技 Linux服务器下的top命令 #动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / to ...

  8. win32: WM_PAINT 实现双缓冲缓图

    相关参考资料: GDI下实现双缓冲 - http://jingyan.baidu.com/article/e73e26c0f8df2424acb6a76e.html <Win32_19>用 ...

  9. POE 供电

    受电设备(PD)和供电设备(PSE) 标准的五类网线有四对双绞线但是在10M BASE-T和100M BASE-T中只用到其中的两对.IEEE80 2.3af允许两种用法: 1.应用空闲脚供电时4.5 ...

  10. 字符输入流 FileReader

    package cn.lideng.demo3; import java.io.FileNotFoundException; import java.io.FileReader; public cla ...