使用springloaded进行java应用热部署

试了下不错,不像JRebel那样收费,这个开源的,感觉很好用。

首先下载springloaded.jar

https://github.com/spring-projects/spring-loaded

也可以使用maven拉取:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>springloaded</artifactId>
  <version>1.2.7.RELEASE</version>
</dependency>

普通jdk应用

java -javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify SomeJavaClass

只要修改class文件,立即生效,SomeJavaClass修改无效。

tomcat配置

关闭tomcat的reloadable

修改server.xml。

<Context reloadable="false"

修改启动配置增加代理

如果是纯tomcat中配置,修改启动脚本catalina.bat(linux中为catalina.sh):

#windows
#set JAVA_OPTS=-javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify
#linux
export JAVA_OPTS="-javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify"

只要修改class文件,立即生效。

Eclipse

修改server配置

修改eclipse的Servers模块中的server.xml文件。

<Context reloadable="false"

修改启动脚本

在eclipse中,第一次启动运行之后,修改“Run Configurations”,在启动脚本的”Arguments” 选项卡,在“VM arguments”文本框中增加:

-javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify

使用修改后的启动脚本,重新启动,既可实现修改后自动加载了。

控制台不会显示任何信息。

非Spring项目的说明

可以使用热加载功能,但是会提示:

Reloading: JVMPlugin: warning: unable to clear BEANINFO_CACHE, cant find field

忽略即可。如果加入spring容器的依赖和配置,就不会出现了。

你可能感兴趣的:(java,jrebel)