Tomcat appBase[通俗易懂]

<Hostname=”localhost”appBase=”webapps”unpackWARs=”true”autoDeploy=”true”><Contextpath=”project_name”docBase=”/usr/local/…

大家好,又见面了,我是你们的朋友全栈君。

 <Host name=”localhost”  appBase=”webapps”  unpackWARs=”true” autoDeploy=”true”>
        <Context path=”project_name” docBase=”/usr/local/project_name” debug=”0″ reloadable=”true” crossContext=”true”/>  
        <!– SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html –>
        <!–
        <Valve className=”org.apache.catalina.authenticator.SingleSignOn” />
        –>

        <!– Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern=”common” –>
        <Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
               prefix=”localhost_access_log.” suffix=”.txt”
               pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

      </Host>

现在我们来讨论下:tomcat 中server.xml文件: Host中 appBase 属性和  context中docBase属性的一些工作原理

1、如果你在Host 中的 appBase目录下配置了 如   appBase –对应的是工程的目录

   1.1、<Host name=”localhost”  appBase=”webapps” unpackWARs=”true” autoDeploy=”true”>   –这个是tomcat的默认配置

           tomcat在启动的时候就会将${tomcat_home}/webapps 目录下的所有子目录当成工程;如:在webapps下有子目录project_a 和project_b  他就会tomcat解析成project_a 和project_b 两个工程

2、如果你想tomcat启动后加载你指定目录的下的工程  同时你指定了工程名 如  docBase  对应的是单独的工程

           <Context path=”project_name” docBase=”/usr/local/project_name” debug=”0″ reloadable=”true” crossContext=”true”/>    

          此时tomcat访问如果你访问  http://IP:port/project_name/就能访问到 /usr/local/project_name 下的资源了;

3、如果appBase指定了同一个目录 同时docBase 指向了appBase指定目录的子目录  

        这时就会出现问题,tomcat会对同一个工程启动2次 

启动过程:1、首先tomcat会对webapps下面的所有工程启动一次  ;2、然后启动docBase目录下的工程,此时如果webapps下面刚好有 project_dir工程的话,就会再次被启动 

此时tomcat下就启动了两个一样的工程了  project_dir 和project_name工程; 你在启动tomcat时 在catalina.out日志文件中就会发现日志重复打印了; 

 

appBase 和docBase以 /  开头说明是绝对目录;

转载于:https://my.oschina.net/u/1414315/blog/812445

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125600.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于测试url传值的问题

    关于测试url传值的问题

    2021年6月8日
    121
  • python中列表(list)函数及使用

    python中列表(list)函数及使用序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字-它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类型,但最常见的是列表和元组。序列

    2022年7月3日
    31
  • robots.txt详解[通俗易懂]

    robots.txt详解[通俗易懂]怎样查看robots文件?浏览器输入主域名/robots.txtrobots.txt的作用robots.txt文件规定了搜索引擎抓取工具可以访问网站上的哪些网址,并不禁止搜索引擎将某个网页纳入索引。如果想禁止索引(收录),可以用noindex,或者给网页设置输入密码才能访问(因为如果其他网页通过使用说明性文字指向某个网页,Google在不访问这个网页的情况下仍能将其网址编入索引/收录这个网页)。robots.txt文件主要用于管理流向网站的抓取工具流量,通常用于阻止Google.

    2022年5月1日
    46
  • Bitmap.MakeTransparent 方法

    Bitmap.MakeTransparent 方法使默认的透明颜色对此Bitmap透明。重载列表使默认的透明颜色对此Bitmap对象透明。[Visual Basic]OverloadsPublicSubMakeTransparent()[C#]publicvoidMakeTransparent();[C++]public:voidMakeTransparent();[JScript]publicfunctionM

    2022年7月21日
    13
  • 为什么引入ReLU激活函数

    为什么引入ReLU激活函数https://blog.csdn.net/fredinators/article/details/79443386ReLu是神经网络中的一个激活函数,其优于tanh和sigmoid函数。1.为何引入非线性的激活函数?如果不用激活函数,在这种情况下每一层输出都是上层输入的线性函数。容易验证,无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(…

    2022年6月20日
    33
  • 【深度讲解】手把手教你python制作萝莉音智能对话语音机器人,附全部源码!速速学起来!!

    文章目录演示先看看前言一定要看第一步实现普通智能对话第二步文字转萝莉音第三步播放音频第四步综合上述代码完整代码下载地址演示先看看前言一定要看为了让大家真正学会,我用分模块步骤的方式讲解,这样也能让大家不仅在娱乐的同时,还能学到知识。东西有点多,你大可不必着急复制粘贴,你只需要看看我的讲解即可,最下面可以直接下载完整的源码文件。第一步实现普通智能对话代码如下:#coding=gbk”””作者:川川时间:2021/8/21″””importrequestsprint(‘请输入你想说的

    2022年4月17日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号