Pages

搜尋此網誌

2014年1月15日 星期三

Window 設定:開機自動執行程式或 *.bat 不需登入,以啟動 spring-boot 應用程式為例,加映 command line 就能搞定的 geek 版

Window 設定:開機自動執行程式或 *.bat 不需登入,以啟動 spring-boot 應用程式為例,加映 command line 就能搞定的 geek 版

使用 spring-boot 的好處之一,不需要額外安裝 tomcat,也不需要包成 war 檔進行 deploy,我們可以直接包成 jar 檔之後透過比如下面的指令進行啟動服務:java -jar service-1.0.0.jar,可以這麼做的原因是 spring-boot 使用 tomcat-embed 作為 service,所以可以直接使用 jar 運行,作為 server 啟動。

完整的啟動 bat 內容如下:

set JAVA_HOME=E:\service\Java\jdk1.7.0_45
set JAVA_JRE=E:\service\Java\jre7
java -jar service-1.0.0.jar

設定好 JAVA_HOME 以及 JAVA_JRE 即可不受 window 自動更新 JDK 造成相容性問題,最後再執行 java -jar service-1.0.0.jar 即可啟動服務。

當程式開發好之後,實際發佈到主機作為 production 運行時,我們不希望偶爾的 window 自動更新重啟時造成服務未開啟,讓客戶錯以為系統有問題,在 window 底下最簡單的自動啟動指定的應用程式是將捷徑放置於開始功能列中的 [啟動] 資料夾,這樣的作法有幾個問題:

  1. 需要登入才會觸動,所以若是自動更新重啟沒有登入也是沒效
  2. 若有遠端登入也會啟動,造成重覆開啟

我們可以用另外一種設定方式來進行透過 [工作排程器],步驟如下:

  1. 啟動工作排程器
    enter image description here

  2. 建立基本工作
    enter image description here

  3. 定義服務名稱
    enter image description here

  4. 定義啟動時機
    enter image description here

  5. 選擇工作類型,選擇啟動程式
    enter image description here

  6. 選擇要執行的 bat 檔
    enter image description here

如此一來,系統就會在啟動時執行目標工作啦,記得要寫 log,因為這樣的運行模式下沒有 console 視窗,有任何異常都要從 log 檔查看。

同場加映:

宏大 lyhcode 詢問:

有沒有用 command line 就能搞定的 geek 版?

感謝 jamesFu 大師解答:

schtask /create /sc onstart /tn Service /tr “E:\service\run.bat” /ru

張貼留言