Tomcat部署时war和war exploded区别以及如何实现热部署

war和war exploded的区别

      使用IDEA配置Tomcat服务的时候,在 Select Artifacts to Deploy 选项中相同项目名有war和 war exploded 两种模式,之前只是傻乎乎的随机选一个,知其然而不知其所以然。今天探究一下二者的区别。
 
 
  • war模式:将web工程以war包的形式上传到服务器;
  • war exploed模式:将web工程以当前文件夹的位置关系上传到服务器。
       通俗地说,war模式先打成war包,然后再发布到Tomcat的ROOT下。所以选择这个模式后,你再看下你的tomcat的root文件夹下,是刚打成的项目。war exploded模式只编译生成target,然后把当前的target文件夹的位置关系上传到服务器,没有打包到tomcat的ROOT下。因此这种方式支持热部署,一般在开发的时候也是用这种方式,关于热部署,下面详细介绍一下。
 

热部署

 
      在平时开发的时候,每次修改代码都需要重启一次Tomcat的确不方便,如果使用热部署,可以大大减轻工作量,此时应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。需要在Tomcat做如下设置:
 
  • on ‘update‘ action:当用户主动执行更新的时候更新    快捷键:Ctrl + F9
  • on frame deactication:在编辑窗口失去焦点的时候更新
      你可以根据自己的需求进行设置,我这里两个都有设置。
      然后启动IDEA的自动编译功能。Intellij IDEA默认关闭了自动编译,在Setting中找到 Build,Execution,Deployment => Compiler,勾选Build Project automatically。
 
      on frame deactivation热部署缺点:基于JVM提供的热加载仅支持方法块内代码修改,只有在debug模式下,并且idea失去焦点时才会触发热加载,相对加载速度缓慢。
      如果你的工程中没有选项 Update classes and resources ,那么,只能更新classes文件中的变动,并不能更新静态文件中的变动。
        出现这种选项情况的原因是在配置Deployment时选择了包含war的包,如全部都是war exploded则不会出现这种情况。召唤Update classes and resources的方式:先remove当前工程所有的Artifacts,再次添加,添加的时候在Artifact清单中仅仅选择工程名称后面有 exploded的选项。
 
Reference
 
posted @ 2019-06-14 20:51  楼兰胡杨  阅读(4498)  评论(0编辑  收藏  举报