文档章节

IDEA2016 + tomcat 设置热部署

Dylan1009
 Dylan1009
发布于 2017/08/27 11:46
字数 687
阅读 18
收藏 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
粉丝 4
博文 190
码字总数 129187
作品 0
广州
程序员
私信 提问
我在开源社区下载了一个权限管理的项目,部署之后不知道如何访问jsp页面,求指点

本地环境:Idea2016, jdk1.7 Tomcat7 项目下载网址:https://github.com/Jdoing/myweb 最近在学习idea,所以下载安装了idea2016及其插件,想下个项目来学习但是不懂得如何访问其中的jsp页面,...

在我的歌声里
2016/09/21
137
1
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年
10/15
0
0
使用Maven如何debug和热部署

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

nick_chen
2013/01/21
31.8K
10

没有更多内容

加载失败,请刷新页面

加载更多

JAVA设计模式之模板方法模式和建造者模式

一、前期回顾 上一篇《Java 设计模式之工厂方法模式与抽象工厂模式》介绍了三种工厂模式,分别是工厂方法模式,简单工厂方法模式,抽象工厂模式,文中详细根据实际场景介绍了三种模式的定义,...

木木匠
今天
4
0
C中的宏的使用(宏嵌套/宏展开/可变参数宏)

基本原则: 在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。 #是在定义两边加上双引号 #define _TOSTR(s) #sprintf(_TOSTR(test ABC))pr...

SamXIAO
今天
4
0
SpringBoot 整合异步调用方法

1. 在 SpringBoot 主类上使用 @EnableAsync 注解,开启异步调用功能 package com.codingos.springbootdemo;import org.springframework.boot.SpringApplication;import org.springfra......

北漂的我
今天
1
0
0015-如何使用Sentry管理Hive外部表权限

1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的...

Hadoop实操
今天
5
0
边缘计算与数据中心的发展趋势

导读 Gartner研究表明,人工智能、物联网和5G助力下一代商业创新,由此产生大量数据,2020年前企业将使用超过75亿台联网设备。 在几乎每个方面,社会的节奏都正变得更快。我们希望客户服务问...

问题终结者
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部