作为一名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]
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class TestServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- response.getWriter().println("hello world");
- }
- }
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]
- public class TestServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- response.getWriter().println("hello world");
- response.getWriter().println(this.getName());
- }
- private String name = "Jim";
- public String getName() {
- return name;
- }
- }
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 目录上。