文档章节

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
使用Maven如何debug和热部署

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

nick_chen
2013/01/21
31.8K
10
liudajiang/inServer

#inServer 内置Web服务器,实现以main方法启动web项目,自动检测代码修改并热部署 ###传统web项目开发部署方式对比: - 项目不再要求是web项目,可以是java se项目,maven simple project - ...

liudajiang
2016/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
16分钟前
1
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
20分钟前
1
0
Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
1
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
2
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部