springload熱部署Java Application項目

來源:互聯網
上載者:User

標籤:springload

對於營運人員來說,熱部署是常常要思考的一個問題。熱部署簡單來說,就是局部或者某個檔案修改後,不用重新啟動程式,立即生效。

好處在於在程式初始化的時候可能會載入大量的初始化資料,重啟程式成本太高;程式如果是項目中的單個模組,重啟會影響別的應用。

對於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");@Overridepublic 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:57Exec Main Class OK! Result=9 @2015-05-20 11:10:58Exec Main Class OK! Result=9 @2015-05-20 11:10:59Exec Main Class OK! Result=9 @2015-05-20 11:11:00Exec Main Class OK! Result=9 @2015-05-20 11:11:01Exec Main Class OK! Result=9 @2015-05-20 11:11:02Exec Main Class OK! Result=20 @2015-05-20 11:11:03Exec Main Class OK! Result=20 @2015-05-20 11:11:04Exec Main Class OK! Result=20 @2015-05-20 11:11:05Exec Main Class OK! Result=20 @2015-05-20 11:11:06Exec Main Class OK! Result=20 @2015-05-20 11:11:07Exec Main Class OK! Result=20 @2015-05-20 11:11:08Exec Main Class OK! Result=20 @2015-05-20 11:11:09Exec Main Class OK! Result=20 @2015-05-20 11:11:10Exec Main Class OK! Result=20 @2015-05-20 11:11:11



springload熱部署Java Application項目

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.