引言:项目部署行成了递归部署

一、Tomcat相关配置解析以及使用注意事项

参考文章:
https://blog.csdn.net/yztezhl/article/details/80753252
https://www.cnblogs.com/cathyqq/p/5528507.html

二、Host配置主机

  1. name:上方Engine标签中会指定的一个Host,不一样也能启动 (正常是指定一个主Host为默认)。该项可以为域名,访问需要本地域名解析【C:\Windows\System32\drivers\etc的host文件】。
  2. appBase:appBase相对tomcat根目录:“webapps” = “D:\Tomcat\webapps”;也可以写全路径
  3. unpackWARs:是否自动将WAR文件解压运行,为true运行后appBase下有同名文件夹
  4. autoDeploy:appBase下文件夹变化自动部署

三、Context只是Host中的一个元素,增加一个需要部署的应用

  1. path:基于ip:port之后的访问路径,path=“” 则代表替代ROOT成为默认应用。一个Host下仅允许一个path为空 (已尝试多个为空,启动时闪退)
  2. docBase:手动指定的项目路径:相对路径 “myWeb” = Host.appBase + “\myWeb”,是基于appBase;也可以写绝对路径
  3. reloadable:热部署,检测.class文件变化自动部署 (未测试,存在效率代价)

四、tomcat会默认部署 appBase 路径下的所有文件夹,默认 ip:port 访问的是ROOT,如果想默认访问自己的项目,有两种方式:

  1. appBase指定文件夹下的ROOT文件夹中存放自己项目内容。
  2. docBase指定自己的项目WebRoot路径。注意:不要指定已经放在appBase下的项目,因为appBase下的【文件夹】会被自动部署,指定的项目还会再次被部署。

五、work文件夹的作用:work目录只是tomcat的工作目录,tomcat把jsp文件转换为.java文件,编译为.class文件并存储在该目录下,响应客户端请求。

  1. 当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转成.java文件,比如将index.jsp转换成index_jsp.java文件,而后编译为index_jsp.class文件,最后tomcat容器通过ClassLoader类把这个index_jsp.class类装载入内存,进行响应客户端的工作。
  2. tomcat会定时扫描容器内的jsp文件,读取每个文件的属性,当发现某个jsp文件发生改变时(文件的最后修改时间与上次扫描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的扫描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。

六、理解Host、Context以及work文件夹的关系

测试的时候可以同时观察work文件夹中内容的变化。自动生成被部署的应用文件夹D:\Tomcat\work\Catalina\Host.name\Context.path【path多级将被使用#拼接】

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<!-- 等于将webapps路径下的所有文件夹拆解为单个context -->
<Context path="" docBase="ROOT" reloadable="false" />
<Context path="docs" docBase="docs" reloadable="false" />
<Context path="manager" docBase="manager" reloadable="false" />
<!-- 若此时手动配置了context,并重复了路径,则应用将被替换。访问时若与之前docs页面无变化,记得刷新浏览器缓存,或者删除work文件夹下的项目资源再启动。 -->
<Context path="docs" docBase="D:\JAVA\Workspace\WebTest\WebRoot" reloadable="false" />
<!-- 若此时手动配置了context,未重复路径,但应用已经在webapps下,则应用将被部署两次。-->
<Context path="docs1" docBase="docs" reloadable="false" />
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐