知道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命令来结束之。

IDE集成管理Tomcat的基本原理的更多相关文章

  1. 使用TeamCity对项目进行可持续集成管理

    使用TeamCity对项目进行可持续集成管理 一.可持续集成管理   持续集成,CI:即Continuous integration. 可持续集成的概念是基于团队(小组)协作开发而提出来的,为了提高团 ...

  2. 基础知识:IDE集成开发环境(pycharm)、基本数据类型、用户的交互、运算符

    今日内容: 1.IDE集成开发环境(pycharm) 2.基本数据类型(int.float.str.list.dict) 3.用户的交互(注释.输入input.输出print) 4.运算符(分类及使用 ...

  3. Hudson持续集成管理平台搭建

    IP: 10.0.70.106  8G 内存 (Hudson 多 个 工程 在 同 时 构建 的情况下 比 较耗内存) 环 境: CentOS 6.5 . JDK7 注:Hudson 只是一个持续集成 ...

  4. [转]使用TeamCity对项目进行可持续集成管理(一)

    一.可持续集成管理 持续集成,CI:即Continuous integration. 可持续集成的概念是基于团队(小组)协作开发而提出来的,为了提高团队开发效率与降低集成风险(早发现,早解决.晚发现, ...

  5. maven 学习---NetBeans IDE集成Maven

    NetBeans6.7更新版本已经内置对Maven支持.如遇以前的版本,Maven插件在插件管理器中可用.我们正在使用NetBeans在这个例子中使用6.9. 在NetBeans一些特点如下 您可以从 ...

  6. maven 学习---Eclispe IDE集成Maven

    Eclipse提供了一个很好的插件m2eclipse 无缝将Maven和Eclipse集成在一起. m2eclipse一些特点如下 您可以从Eclipse运行Maven目标. 可以使用其自己的控制台查 ...

  7. IDE集成开发环境(pycharm)、基本数据类型、用户的交互、运算符

    一.IDE集成开发系统pycharm 目的:让Python编程更方便.高效. pycharm的简单定义: PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提 ...

  8. Dubbo入门到精通学习笔记(六):持续集成管理平台之Hudson 持续集成服务器的安装配置与使用

    文章目录 安装Hudson 使用Hudson tips:自动化部署 附录:两个脚本 安装Hudson IP:192.168.4.221 8G 内存(Hudson 多个工程在同时构建的情况下比较耗内存) ...

  9. Dubbo入门到精通学习笔记(三):持续集成管理平台之SVN版本管理系统的安装和使用

    文章目录 持续集成管理平台介绍 持续集成介绍 持续集成管理平台的组成 持续集成实践介绍 即将学习 SVN版本管理系统的安装 安装 Subversion + Apache 安装 jsvnadmin 简单 ...

随机推荐

  1. CF201C Fragile Bridges TJ

    本题解依旧发布于洛谷,如果您能点个赞的话--(逃 前言 题目链接 正解:动态规划 思路不是很好想,想出来了应该就没有多大问题了,但是需要处理的细节较多,再加上水水的样例,难度应该是偏难的.个人感觉应该 ...

  2. python3中的希尔排序

    def shell_sort(alist): n = len(alist) # 初始步长 gap = round(n / 2) while gap > 0: # 按步长进行插入排序 for i ...

  3. nmap工具使用随笔

    1.nmap主要用途:主机发现,端口扫描,版本检测,os检测 2.Nmap是Linux下的网络扫描和嗅探工具包,它可以扫描大型的网络,获取那台主机正在运行以及提供的服务等信息. 3.nmap语法格式: ...

  4. 【Lua篇】静态代码扫描分析(二)词法分析

    一.词法分析 词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程.进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer, ...

  5. Docker部署Mysql实践

    前言:由于Docker部署容器时,没有指定IP,当机器重启后,容器的IP会变化,所以在创建容器的时候,最好能固定IP:同时,在Ubuntu系统中,每次执行命令,都需要root权限,命令需要加sudo标 ...

  6. gRPC学习之四:实战四类服务方法

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. golang 日志框架(zap)完整配置和使用

    目录结构: logger.go文件: package log import ( rotatelogs "github.com/lestrrat-go/file-rotatelogs" ...

  8. SQL 练习11

    查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息 SELECT * from Student WHERE SId in (SELECT SId from sc WHE ...

  9. uniapp封装小程序雷达图组件实现

    效果图: view <canvas id="radar-canvas" class="radar-canvas" type="2d"& ...

  10. DLL-创建DLL

    动态链接库的创建 fangyukuan 2010.6.20 编写DLL时的函数与一般的函数方法基本一样.但要对库中的函数进行必要的声明,以说明哪些函数是可以导出的,哪些函数是不可以导出的. 把DLL中 ...