知道IDE是怎样控制Tomcat的,对更清晰地理解Java Web的执行过程有帮助。在此以IntelliJ IDEA为例,简要描述一下IDE集成管理Tomcat的基本原理。

首先是两个重要的环境变量:

  • CATALINA_HOME:Tomcat的软件安装目录,从这个目录去获取Tomcat的相关程序执行Tomcat的启动、停止等操作
  • CATALINA_BASE:Tomcat的工作文件(如配置文件、WebApp文件等)目录,默认使用CATALINA_HOME的值

在IDEA中添加Tomcat环境时,实际上就是在设置CATALINA_HOME的值(在启动Tomcat时使用),这样IDEA就知道了Tomcat安装在哪里了。

IDEA要启动Tomcat来运行当前的Java Web项目,就要设置Tomcat的配置,使得当前项目的编译结果(如<项目目录>/out/artifacts/xxx_Web_exploded/)能够被Tomcat容器管理到。为了避免搞乱安装目录中的配置,IDEA不会直接修改Tomcat安装目录中的配置,而是将这些配置文件复制到一个临时目录(比如在Windows上是C:\Users\<username>\AppData\Local\JetBrains\IntelliJIdea<version>\tomcat\<guid>),这个临时目录就是CATALINA_BASE

每次在IDEA中启动Tomcat时,IDEA都会做一次这样的复制,然后修改这个临时目录中的配置文件,比如:

  • 端口号(conf/server.xml中设置<Connector>port
  • WebApp的部署路径(conf/Catalina/localhost/ROOT.xml中设置<Context>docBase

IDEA执行$CATALINA_HOME/bin/catalina.sh run命令来启动Tomcat进程,启动时会设置CATALINA_HOMECATALINA_BASE这两个环境变量。

Tomcat进程一直保持运行,直至IDEA执行$CATALINA_HOME/bin/catalina.sh stop命令来结束之。

最新文章

  1. iOS图片拉伸技巧
  2. 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏
  3. mysql数据库中如何修改已建好的表中的【列名】【列的属性】
  4. HTML5-表格
  5. codefoces round193a
  6. ElasticSearch-PHP的API使用(二)
  7. QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)
  8. Android 自定义View (一)
  9. ascii 转换为 utf-8
  10. awk使用正则精确匹配
  11. Hama顶点编程
  12. 生产者消费者的java实现
  13. ul li 实现层级列表显示
  14. 38.html----相对于父元素的fixed定位的实现
  15. SQL删除指定列的指定长度的字符
  16. BBS-项目流程分析-表的创建
  17. SpringBoot Logback日志配置
  18. curl命令大全
  19. 全面解析python类的绑定方法与非绑定方法
  20. [iOS微博项目 - 4.3] - 设置每条微博边框样式

热门文章

  1. WanJetpack项目:用Jetpack实现玩Android,追求最官方的实现方式
  2. pytest框架fixture的使用
  3. Vue-Router 详细解析学习
  4. i春秋-Phone number(union注入+hex转码)
  5. IllegalArgumentException occurred while calling setter for property
  6. iOS开发之Video转GIF
  7. 使用JDBC(Dbutils工具包)来从数据库拿取map类型数据来动态生成insert语句
  8. DVWA(八):File Inclusion 全等级文件包含
  9. CVE-2021-1732 Windows 本地权限提升漏洞 EXP 下载
  10. S3C2440—1.熟悉裸机开发板