springload热部署Java Application项目

对于运维人员来说,热部署是常常要思考的一个问题。热部署简单来说,就是局部或者某个文件修改后,不用重新启动程序,立即生效。

好处在于在程序初始化的时候可能会加载大量的初始化数据,重启程序成本太高;程序如果是项目中的单个模块,重启会影响别的应用。

对于web程序来说,大多是部署在Servlet容器里面,如jBoss,weblogic,tomcat等,这些容器往往提供了配套的热部署方案。

但对于application程序,往往没有厂家单独来做这件事情。

经过本人的搜索,发现springload是一个较好的解决方案。简单测试如下。

1、下载SpringLoad jar包:

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

maven依赖:(可不配置)

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

2、在项目根目录下创建repo目录,将springloaded-1.2.3.RELEASE.jar放到下面。

3、如果是eclipse,就在主类的run configuration里面添加JVM启动参数:

-javaagent:repo/springloaded-1.2.3.RELEASE.jar -noverify

注意路径。

如果是在eclipse里面,记得勾选自动编译。 Project Automatically。

启动后,修改java代码,将会立即生效。

4、对于运维来说,很多工具就不能用了,比如eclipse,热部署就没那么容易了。

如果使用maven管理,可以配置环境变量:

MAVEN_OPTS

-javaagent:repo/springloaded-1.2.3.RELEASE.jar -noverify

或者在%MAVA-HOME%/bin/mvn.bat下添加maven启动参数:

set MAVEN_OPTS=-javaagent:repo/springloaded-1.2.3.RELEASE.jar -noverify

注意路径是项目的根目录。

交给springload来启动项目。

如果修改了某个java类,怎么立即生效呢?

编译该文件到指定的目录下。如把xxx.java  编译到dir目录。

javac -d dir  xxx.java

如我当前的目录:

javac -d target\mvnproject-1.0-SNAPSHOT\WEB-INF\classes src\main\java\com\mobile263\Calcutor.java 

注意-d后面不要再加上类的package目录。

贴出源码:

package com.mobile263;

public class Calcutor {

	public static int calc(int a,int b){
		return a*b;
	}

} 
package com.mobile263;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Console {

    public static void main(String[] args) {
    	Timer timer = new Timer();
    	TimerTask task = new TimerTask() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
			@Override
			public void run() {
				int res = Calcutor.calc(4, 5);
				System.out.println("Exec Main Class OK! Result="+res +" @"+sdf.format(new Date()));
			}
		};
		timer.schedule(task, 1000, 1000);
	}
}

在CMD命令行进入项目根目录,执行maven命令:

mvn exec:java -Dexec.mainClass="com.mobile263.Console" 

修改后运行的结果:

Exec Main Class OK! Result=9 @2015-05-20 11:10:57
Exec Main Class OK! Result=9 @2015-05-20 11:10:58
Exec Main Class OK! Result=9 @2015-05-20 11:10:59
Exec Main Class OK! Result=9 @2015-05-20 11:11:00
Exec Main Class OK! Result=9 @2015-05-20 11:11:01
Exec Main Class OK! Result=9 @2015-05-20 11:11:02
Exec Main Class OK! Result=20 @2015-05-20 11:11:03
Exec Main Class OK! Result=20 @2015-05-20 11:11:04
Exec Main Class OK! Result=20 @2015-05-20 11:11:05
Exec Main Class OK! Result=20 @2015-05-20 11:11:06
Exec Main Class OK! Result=20 @2015-05-20 11:11:07
Exec Main Class OK! Result=20 @2015-05-20 11:11:08
Exec Main Class OK! Result=20 @2015-05-20 11:11:09
Exec Main Class OK! Result=20 @2015-05-20 11:11:10
Exec Main Class OK! Result=20 @2015-05-20 11:11:11

时间: 2024-11-05 12:28:08

springload热部署Java Application项目的相关文章

自动化部署java maven项目到多个目标主机的Shell脚本

本篇是<Linux Shell脚本之远程自动化部署java maven项目>的姊妹篇,但包含了bug.issue修正和添加了更多的支持特性,可以从GitHub上获取最新脚本内容:https://github.com/DingGuodong/AutomaticDeployJavaMavenProject . 自动化部署java maven项目到多个主机的环境条件假设: 1.java maven项目至多有一个依赖项目 2.多个目标主机上的部署目录是相同的 支持特性: 1.在部署主机上将java m

基于IBM Bluemix部署Java Web项目实战演练

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要介绍了IBM Bluemix,并详细说明了如何部署Java Web项目,如何添加MySql服务.最后,提出了自己的一些看法.  文章目录 一.Bluemix简单介绍 二.BlueMix空间申请试用 三.BlueMix创建Cloud Foundry应用 四.添加新的服务 五.总结 一.Bluemix 简单介绍 1.Bluemix 带来了什么        Bluemix 致力于解

阿里云部署Java web项目初体验

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 本文实例访问:http://120.24.19.24:8080/JavaHelloWorld-0.0.1-SNAPSHOT/ (到2016.3.9就不能访问了) 本文实例下载: 一.准备工作 1.注册账号 下载完成后.可到这里https://free.aliyun

在linux下用tomcat部署java web项目的过程与注意事项

在linux下用tomcat部署java web项目的过程与注意事项(原创) 一.安装JDK到http://www.oracle.com/technetwork/java/javase/downloads/index.html下载Java SE 6 Update 27根据操作系统选择Linux x64 - RPM Installer或Linux x86 - RPM Installer下载jdk-6u27-linux-x64-rpm.bin后放在/home目录中,当然其它地方也行.注意:LINUX

阿里云部署Java web项目初体验(转)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 本文实例访问:http://120.24.19.24:8080/JavaHelloWorld-0.0.1-SNAPSHOT/(到2016.3.9就不能访问了) war包有需要的可以来这里下载:http://download.csdn.net/detail/evan

在linux下用tomcat部署java web项目

在linux下用tomcat部署java web项目的过程与注意事项(原创) 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/index.html下载Java SE 6 Update 27 根据操作系统选择Linux x64 - RPM Installer或Linux x86 - RPM Installer 下载jdk-6u27-linux-x64-rpm.bin后放在/home目录中,当然其它地方也行. 注意:L

tomcat部署java web项目遇到的一些小挫折

背景:本人不是Java开发人员,经过四年多的历练,可以说是一枚BI攻城师了吧,最近粗糙的写了一个Portal来集成cognos报表,下面就入正题说一下发布过程中遇到的小问题吧. a:前提:Java web项目已经在MyEclipse里面开发好,发布,利用MyEclipse8.5自带的tomcat运行,通过IE访问项目主页,登录验证一切OK b:把Java web项目导出为.war格式的文件放到tomcat/webapp下面 或者 在MyEclipse8.5中添加自己安装的tomcat6.0然后运

新手小白Linux(Centos6.5)部署java web项目(总)

一.准备 1.linux  centos版本的相关命令操作,千万别找ubuntu的,好多命令都不一样,新手小白我傻傻不知道硬是浪费了一天的时间--(百度百科linux版本了解一下) 2.远程登录: PuTTY .WinSCP .SecureCRT .mstsc.其他(我用的SecureCRT7.3 ,主要看环境支持哪种工具) 3.确认linux服务器有网,没网的话用不了yum,只能从本机获取资源,操作方式也不一样,本文部分安装只介绍yum. 二.明确部署所需要的环境 1.java环境:jdk 2

阿里云服务器部署Java Web项目全过程

最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购买一台服务器了,我选择的是阿里云的ECS,对于新用户有一定的优惠活动.服务器徐购好后可以在管理控制台下看到自己服务器的配置情况.我买的是centos7 1核2G的,详情如下: 本地主机连接服务器 购买了服务器之后,下一步当时是要远程操作服务器,所以需要和远程服务器建立连接.这里有两种方式:一种是使用