文档章节

IDEA2016 + tomcat 设置热部署

Dylan1009
 Dylan1009
发布于 2017/08/27 11:46
字数 687
阅读 20
收藏 0

IntelliJ Idea

之前一直是使用 Eclipse+Jetty 开发的,然而在一次OSX系统更新之后,eclipse居然由于版本过低打不开了(各种震惊、悲伤与无奈)。。。。于是一怒之下换成了IDEA+Tomcat。
下面就来讲一下如何用Idea+Tomcat实现热部署。

热部署好处

什么是热部署呢?举例来说,就是如果你启动了一个应用,但是突然改写了一个文件,如果要使这个改动生效,我们通常需要重新启动这个应用,然而这个启动过程可能会花费很长时间。
那有没有其他办法可以既使改动生效,又不至于去浪费时间重启应用呢?有!那就是热部署。热部署可以在你改动文件之后,系统自动或人工手动触发重新加载class的机制,从而实现不需要启动整个应用,却能使改动生效的效果。

热部署配置

  1. 本文默认你的IDEA已经安装了Tomcat,没有安装的请先去安装,安装方法略;
  2. 打开Edit Configurations;

  3. 选择已有的server或者点击左上角新建一个server;

  4. 选择Deployment,点击左下角的+号,选择Artifact,然后选择你对应的项目;

  5. 选好后是下面这个样子,右侧可以编辑你的项目路径;

  6. 选择Server,主要有以下几点需要注意:
    • VM options: 如果你的tomcat打印出来的日志乱码,那么把这项设置为-Dfile.encoding=UTF-8
    • On 'Update' action: 执行Update时的操作,为了实现热部署,这项一定要选择Update classes and resource
    • On frame deactivation: 这项根据我的观察,如果选择Update classes and resource,会在你最小化Idea或者切换到其他应用后自动进行热部署

  7. 保存;
  8. debug启动。(注意一定要debug启动!)

测试

  1. 写一个简单的接口;
    @Controller
    @RequestMapping("/inter/mytest")
    public class TestJsonController {
     @RequestMapping(value = "test", method = RequestMethod.POST)
     @ResponseBody
     public String phoneChange(@RequestBody String param){
         System.out.println("参数: "+param);
         System.out.println("初始");
         return param;
     }
    }
  2. 对接口发起一个请求,查看Output;

  3. 接下来我们修改一下代码;

    @Controller
    @RequestMapping("/inter/mytest")
    public class TestJsonController {
     @RequestMapping(value = "test", method = RequestMethod.POST)
     @ResponseBody
     public String phoneChange(@RequestBody String param){
         System.out.println("参数: "+param);
         System.out.println("改变");//将 ‘初始’ 改成 ‘改变’
         return param;
     }
    }
  4. 注意了!这里需要点击一下Update;

  5. 选择第二项,然后点OK;

  6. 然后左下角会提示 "1 class reloaded" ,证明你的修改已经成效了;

  7. 再次发起请求测试,后发现输出已经变了。

至此,大功告成!



作者:夜_雪
链接:http://www.jianshu.com/p/4409878590cc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

© 著作权归作者所有

共有 人打赏支持
Dylan1009
粉丝 5
博文 194
码字总数 130862
作品 0
广州
程序员
私信 提问
IDEA2016下配置JRebel 7.02

IDEA2016下配置JRebel 7.02 1、安装JRebel插件。 2、下载JRebel破解文件 3、通过破解文件破解: copy jrebel.jar C:Usersleizm.IntelliJIdea2016.2configpluginsjr-ide-idealibjrebel copy ......

leizhimin
2017/06/20
0
0
Eclipse Maven Tomcat的利用配置

1.事先准备 m2eclipse插件中其实内嵌了Maven,但个人更偏向于用独立的Maven(可以自由选择版本啦,偶尔可以在命令行中跑Maven命令啦)。 下载Apache Maven:http://maven.apache.org/,关于环...

躺着的S
2013/08/03
0
4
Tomcat部署时war和war exploded(可以热部署)

war和war exploded的区别 war模式:将WEB工程以包的形式上传到服务器 ; war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布; war exploded模式:将WEB工程以当前文件...

职业搬砖20年
2018/10/15
0
0
使用Maven如何debug和热部署

最近尝试将项目用Maven管理,Maven管理能力确实不错,但在开发时,却遇到了一些问题,望大家指点: 1、debug问题: 我是使用Maven的tomcat插件:tomcat-maven-plugin在eclipse里直接集成tom...

nick_chen
2013/01/21
34.3K
10
JAVAEE——宜立方商城14:系统部署

1. 学习计划 1、系统部署 2. 项目部署 2.1. 项目架构讲解 2.2. 网络拓扑图 2.3. 系统部署 2.3.1. 部署分析 e3-manager e3-manager-web e3-portal-web e3-content e3-search e3-search-web e...

kent鹏
2018/08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
1
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部