16°

idea配置tomcat里你不知道的小秘密

首先

提一个大家都常见,却都不是很知晓的问题。就是war和war exploded的区别是什么?

1.war模式:将WEB 工程以包的形式上传到服务器; 2.war exploded模式: 将WEB 工程以当前文件夹的位置关系上传到服务器;

也就是说: 1)war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布。 2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。 3)在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。

第一种war形式

我们设置好war包形式,然后运行tomcat

第二种war exploded形式

再以war exploded的形式运行tomcat

结论

我们发现两种形式,都没有在tomcat下的wabapps下发现war包。

这也就是我要提的小秘密,也可能只有我自己认为是个小秘密,哈哈 然后我就思考,为什么会出现这样的问题,使用tomcat配置了呀,运行的war包怎么没有部署在tomcat下。有点违背最初使用eclipse的时候的套路呀!

经过调查:发现在idea中配置的tomcat,在运行时idea不会把项目放到自己的webapps路径下,而是在${user.home}/.IntelliJIdea/system/tomcat 目录下。

比如我的是在:C:\Users\georgedage.IntelliJIdea2018.3\system\tomcat\Unnamed_epidemic_management_system

docBase是指要运行的项目的部署位置,D:\java\IDEAWorkSpace\项目 就是项目源代码的位置,target是由maven构建后生成的.

所以最终的解惑就在于:

1.首先Intellij会为每个web项目建立一个单独的文件夹,以“Unnamed_项目名”命名(可在.idea/workspace.xml中修改)。

2.在每次启动项目时,它先将tomcat目录下原始的CATALINA_BASE目录拷贝一份到该目录下,也就是将当前tomcat的配置文件拷贝到“Unnamed_项目名”文件夹下。

3.然后将CATALINA_BASE的路径修改为该目录的路径,再在 Unnamed_项目名/conf/Catalina/localhost下添加项目的配置文件ROOT.xml。

4.最后启动tomcat,tomcat除了会启动webapps下应用外还会加载/conf/Catalina/localhost下配置的应用,而Intellij就是通过这种方式“隐蔽”地加载web项目。

本文由【乔治大哥】发布于开源中国,原文链接:https://my.oschina.net/u/4473161/blog/3196691

全部评论: 0

    我有话说: