博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用spring-loaded实现应用热部署
阅读量:6282 次
发布时间:2019-06-22

本文共 2379 字,大约阅读时间需要 7 分钟。

  hot3.png

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

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

相似产品(Jreloader : http://blog.csdn.net/suwing6406029/article/details/37996035)

 

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]

  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. server.xml 修改

<Context docBase="test" path="/test" reloadable="false" source="org.eclipse.jst.jee.server:test"/>      

reloadable="true" 改为   reloadable="false"

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

 

[java]

  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 worldJim

 

这样,我们不用重启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的情况下,实现应用的热部署。 

关于多项目的自动加载:

可通过eclipse的Build Path -> Source -> Link Source 来实现。选定到依赖项目的src目录上,如果为maven或者gradle项目 需要选择到 src/main/java 目录上。

 

 

转载于:https://my.oschina.net/cccyb/blog/720105

你可能感兴趣的文章
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>