zoukankan      html  css  js  c++  java
  • 使用spring-loaded实现应用热部署

    作为一名Java开发者您是否会遇到这种情况:新增一个方法或字段必须重启tomcat才能对其进行调试?

    有没有办法使得不重启tomcat就能调试呢.spring-loaded就可以.

    spring-loaded是一个开源项目,项目地址:https://github.com/spring-projects/spring-loaded

    且看下面这一段话:

    Spring Loaded allows you to add/modify/delete methods/fields/constructors. The annotations on types/methods/fields/constructors can also be modified and it is possible to add/remove/change values in enum types.

    意思是它允许你动态得新增/修改/删除某个方法/字段/构造方法,同样可以修改作用在类/方法/字段/构造方法上的注解.也可以新增/删除/改变枚举中的值.

    下面我们就来实验一把.

    1.下载spring-loaded,我这里下在的是springloaded-1.2.5.RELEASE.jar,把jar放在C盘根目录

    2. eclipse新建一个web工程,名为testsl,注意添加tomcat对应jar

    2. 新建一个Servlet,名为TestServlet,内容如下:

    [java] view plain copy
     
     print?
    1. import java.io.IOException;  
    2. import javax.servlet.ServletException;  
    3. import javax.servlet.http.HttpServlet;  
    4. import javax.servlet.http.HttpServletRequest;  
    5. import javax.servlet.http.HttpServletResponse;  
    6.   
    7. public class TestServlet extends HttpServlet {  
    8.     private static final long serialVersionUID = 1L;  
    9.   
    10.     protected void doGet(HttpServletRequest request,  
    11.             HttpServletResponse response) throws ServletException, IOException {  
    12.         response.getWriter().println("hello world");  
    13.     }  
    14.   
    15. }  


    3. 右键项目->Run as->Run configurations... 在tomcat启动项添加VM参数-javaagent:C:/springloaded-1.2.5.RELEASE.jar -noverify

    4. 启动tomcat,浏览器输入http://localhost/testsl/TestServlet

    此时会正常打印hello world

    5. 在TestServlet中添加一个方法和一个属性,如下

    [java] view plain copy
     
     print?
    1. public class TestServlet extends HttpServlet {  
    2.     private static final long serialVersionUID = 1L;  
    3.   
    4.     protected void doGet(HttpServletRequest request,  
    5.             HttpServletResponse response) throws ServletException, IOException {  
    6.         response.getWriter().println("hello world");  
    7.         response.getWriter().println(this.getName());  
    8.     }  
    9.       
    10.     private String name = "Jim";  
    11.       
    12.     public String getName() {  
    13.         return name;  
    14.     }  
    15.   
    16. }  


    修改完后,直接刷新浏览器,此时会打印

    hello world
    Jim

    这样,我们不用重启tomcat就能直接调试程序了.

    上文所说的是spring-loaded在开发模式中的使用.接下来在讲下线上模式如何使用.

    线上模式使用原理跟开发模式一样

    1. 把springloaded-1.2.5.RELEASE.jar放到tomcat的bin文件夹下

    2. 打开bin下的catalina.bat,添加如下一句

    set JAVA_OPTS=-javaagent:springloaded-1.2.5.RELEASE.jar -noverify

    这样就完成了spring-loaded的安装,能够检测tomcat下部署的webapp,在不重启tomcat的情况下,实现应用的热部署。 

  • 相关阅读:
    手机抓包
    基础数据-wiki
    Laravel异常日志
    用户设备、UA检测 相关
    yum安装的nginx新增模块http_image_filter_module笔记
    nginx 配置图片自动裁剪
    PHP中使用ffmpeg截取视频图片笔记
    采集乱七八糟记录下
    Laravel学习笔记之session使用
    html5 新增表单类型
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/6497930.html
Copyright © 2011-2022 走看看