部署成功之后,发现好多都不太懂,不明白怎么就部署成功了,具体运行方式也不懂,所以就 在网上查了一些资料,还有一些有点不确定的因素,希望和大家一块讨论。

IDEA部署Tomcat原理

上一篇文章部署成功后,我们来对比一下IDEA运行服务器与直接运行服务器有什么异同?

  • IDEA运行如下:
  • 手动运行服务器操作如下
    打开命令行窗口cmd,如果你没有配置环境变量的话,进入到安装Tomcat目录下的bin文件夹下,输入catalina run,界面如下:

    两者对比,发现只有CATALINA_BASE不同
    那么到底发生了什么呢?CATALINA_BASE与CATALINA_HOME有什么不同呢?
    官方解释如下:

    额,英语不太好。
    上面的意思简单来说就是CATALINA_HOME是安装目录,CATALINA_BASE是工作目录。
    这么做的好处就在于可以使用CATALINA_HOME安装目录下的资源,在CATALINA_BASE运行目录下工作,而IDEA就是偷换了其中的CATALINA_BASE工作目录。
    我们进入IDEA运行的CATALINA_BASE目录也就是上方箭头指向的目录,查看自己IDEA运行时显示的文件夹,一般生成路径如下:
    C:\Users{本机名}.IntelliJIdea2018.3\system\tomcat\工程名\conf 你会看到三个文件夹

    你每次建的Web项目都会分配一个tomcat实例,
    这里面conf文件下有着同一份tomcat配置,
    IDEA运行的时候就是用的这里面的配置,
    所以你在Tomcat下面修改的配置就不起作用了,
    而IDEA运行的时候依赖你安装目录下的lib和bin文件夹。

举个例子,你随便创建一个文件夹,将Tomcat里面的这4个文件夹复制过来

再创建两个文件runCatalina.bat和stopCatalina.bat
runCatalina.bat内容如下

set "CATALINA_BASE=%cd%"
set "CATALINA_HOME=G:\Installation_Package\Tomcat\apache-tomcat-8.5.39\apache-tomcat-8.5.39"
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
call "%EXECUTABLE%" start

stopCatalina.bat内容如下

set "CATALINA_BASE=%cd%"            <!--设置当前路径为CATALINA_BASE-->
set "CATALINA_HOME=G:\Installation_Package\Tomcat\apache-tomcat-8.5.39\apache-tomcat-8.5.39"
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
call "%EXECUTABLE%" stop

在该conf文件夹下server.xml中修改端口号,修改为8088,(可以不修改)


然后运行runCatalina.bat,会出现Tomcat界面,说明服务器打开成功

而IDEA就是这样实现的,IDEA更换了CATALINA_BASE的内容。
这样方式用途在于你需要在一台机器上面部署多个Tomcat实例,但是你又不想创建多个Tomcat的副本,换句话说就是让这些Tomcat副本拥有自己 的工作目录但是共享Tomcat的代码。
但是此时你肯定还有一个疑问就是,IDEA如何修改CATALINA_BASE的内容的呢?
我在网上查了相关资料,还不是特别确定,有一部分猜测,后期如果明白的话会马上补充上。

上方箭头指的是运行启动与停止的脚本所在位置,
先启动安装目录下的batalina.bat文件,
该文件里面给CATALINA_BASE赋值,部分代码如下

那么如何将其赋值为C盘下的路径呢?
我个人理解是Tomcat先查找安装目录下文件,确定该文件夹下的文件与IDEA启动时间不符,所以IDEA没有修改Tomcat目录,转而去C盘下的IDEA工程下寻找该配置文件,找到相关配置文件,然后在此路径下加载该路径到CATALINA_BASE的。

如果解释不正确的,希望大家多多指点。

(三)IDEA部署Tomcat原理相关推荐

  1. IDEA部署tomcat原理小解

    IDEA部署tomcat原理小解 最近看到一个视频对IDEA部署启动tomcat有了新的理解.下面和大家分享一下.  1.tomcat部署项目的三种方式  在纯tomcat环境下,不使用开发工具tom ...

  2. Docker原理及容器部署Tomcat(一)

    Docker虚拟化是虚拟化技术解决方案中的一种,轻量级.高性能的虚拟化技术,是目前互联网使用最广泛的虚拟化技术: Docker虚拟化技术概念和原理 Docker虚拟化技术的产物Docker容器(虚拟机 ...

  3. IDEA/Tomcat 原理:如何将 Tomcat 集成到 IDEA?实现由传统部署延伸到热部署 Java EE 项目?

    文章目录 前言 一.将 Tomcat 集成到 IDEA 中 1.1.进入 IDEA Tomcat 配置页面 1.2.配置并集成 Tomcat 1.3.配置完成说明 1.4.集成检查 1.4.1.检查主 ...

  4. tomcat中三种部署项目的方法(转)

    tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/h ...

  5. tomcat原理简要分析,java

    tomcat原理 tomcat位置 tomcat实际上是部署在服务器上的: tomcat作用 tomcat服务器是一个Servlet和JSP容器,它响应HTML页面的访问请求. 实际上Tomcat是A ...

  6. Intellij idea 的tomcat原理讲解

    作者: 陈宇超 纪念卓越班的日子 初次用idea的小白可能会很感到很神奇,intellij idea部署web项目在浏览器不需要输入项目名就可以直接访问,很是方便啊.那么 intellij 是如何实现 ...

  7. tomcat + spring mvc 原理(一):tomcat原理综述和静态架构

    tomcat + spring mvc 原理(一):tomcat原理综述和静态架构 tomcat + spring mvc的运作模式 tomcat内部的基本容器构成 tomcat容器对应的外部配置 t ...

  8. SpringBoot嵌入Tomcat原理分析

    SpringBoot嵌入Tomcat原理 内嵌Tomcat启动原理 首先,来到启动SpringBoot项目的地方,也就是朱配置类. @SpringBootApplication public clas ...

  9. Tomcat 原理篇

    TOMCAT 原理篇 一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个s ...

  10. 源码包部署tomcat

    JAVA 在openjdk下载 jre----痩身版的-------jdk java的容器----->tomcat,websphere(银行用的多),Jboss(12306),weblogic ...

最新文章

  1. 程序设计实习MOOC / 程序设计与算法(三)第一周测验
  2. plugin since you are using Gradle version 4.6 or above
  3. 阿里小程序云应用上线了,有哪些看点?
  4. Property or method “id“ is not defined on the instance but referenced during render.Make sure ......
  5. 一个servlet,多个dwr.xml配置文件
  6. FFmpeg与libx264接口源代码简单分析
  7. Unity3D基础15:触发器
  8. phpFreeChat 2.0.0 发布,Web 聊天室
  9. Redis只能做缓存?太out了!
  10. 【转】python eval
  11. Raspberry Pi车牌识别系统
  12. 泛函分析 04.05 有界线性算子 - 闭算子与闭图像定理
  13. QOS中 PQ,CQ.RR,WFQ,CBWFQ,LLQ区分
  14. linux系统进入图文界面,Linux启动界面切换:图形界面-字符界面
  15. oracle中nowait怎么用,oracle中UPDATE nowait 的使用方法介绍
  16. 敏捷项目管理21天学习计划--敏捷生命周期
  17. Mysql组复制(MGR)——前提及限制
  18. 《神雕瞎驴》,金庸看后哭了^-^
  19. 拥有多重人格的他,可能是个裂脑人
  20. 受控电源(SOC PWM调压SVB)计算工具CVC使用说明

热门文章

  1. android安卓字体下载,安卓Android简中综艺手机字体
  2. Json解析工具类之GsonUtil类
  3. QQ广告营销推广全能王 QQ空间自动发表日志说说广告实用工具!
  4. web压力测试工具(小而精)
  5. 你会用 JSON.stringify()? JSON.stringify一些坑
  6. 油猴脚本对web项目的影响
  7. 教你轻松安装Adobe Acrobat XI Pro(编辑PDF使用的)
  8. CE修改器基础操作教程
  9. Datalogic得利捷扫码器助力生产与物流自动化!
  10. 蓝牙方案,蓝牙国密读卡器,TypeA/TypeB/Felca卡读写,分享蓝牙NFC读写器带USB接口,银行卡/CPU卡/NTAG213/Mifare卡蓝牙读写器,usb多通道通讯