修改配置檔案不用重啟tomcat
專案需要頻繁更新配置檔案,每次改完需要先停tomcat,在重啟很麻煩~~~
今天抽個空研究了一下,發現很多人都遇到類似的問題,然後綜合了下各個網站的解決辦法,我整了一個demo出來了,廢話不多說先上圖:
說明:配置檔案第一次只有一個屬性,test;待執行完後又新增一個新屬性appId;
原始碼如下:
package conf; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import org.apache.log4j.Logger; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.support.PropertiesLoaderUtils; /** * 動態載入配置檔案 * @author iYjrg_xiebin * @date 2016年8月9日下午3:55:09 */ public class SysProperties implements Runnable{ private static Logger log = Logger.getLogger(SysProperties.class); private Map<String,Long> configFileModifyDate = new HashMap<String, Long>(); /** * 系統配置檔案,包含系統classpath目錄下config*.properties中的內容,5秒鐘檢查一次,如果有變化自動重新載入。 */ public static Map<String,String> SYSTEM_CONFIG = new ConcurrentHashMap<String,String>(); //配置檔案路徑 private static String defaultPropFileName = "/resources"; /** * 系統配置檔案監測,每5秒檢測一次,如果配置檔案有變化,則重新載入。 */ @Override public void run() { int checkDely= 5*1000 ; // 配置檔案自動檢查間隔; int beginDely = 60*1000; // 1分鐘後執行配置檔案自動檢查功能。 try { Thread.sleep(beginDely); log.info("啟動 配置檔案檢查 執行緒,當前檢測頻率:"+checkDely); } catch (InterruptedException e1) { e1.printStackTrace(); } while(true){ try { this.loadAllConfigFiles(); } catch (Exception e) { e.printStackTrace(); } try { Thread.currentThread(); Thread.sleep(checkDely); } catch (InterruptedException e) { e.printStackTrace(); } } } /** * 檢查系統配置檔案,並更新全域性變數 。 * @throws Exception * @date 2012-8-31 */ private void loadAllConfigFiles(){ String tempPath = this.getClass().getResource(defaultPropFileName).getFile(); File fileDir = new File(tempPath); fileDir.listFiles(new FileFilter() { @Override public boolean accept(File file) { try { String name = file.getName(); String fullPath = file.getAbsolutePath(); if(name.matches("^sys.*\\.properties$")){//properties Long value = configFileModifyDate.get(fullPath); if(value==null || value.longValue()!=file.lastModified()){ log.info("載入配置檔案:"+file); loadPropertieFile(file); configFileModifyDate.put(fullPath,file.lastModified()); } } } catch (Exception e) { e.printStackTrace(); } return false; } }); } /** * 載入配置檔案到SYSTEM_CONFIG * @date 2012-8-31 * @param configFile 系統配置檔案以 sys*.properties命名。 */ private void loadPropertieFile(File configFile) { try { Properties properties = PropertiesLoaderUtils.loadProperties(new FileSystemResource(configFile)); for(String key:properties.stringPropertyNames()){ String value=properties.getProperty(key); log.info("load property:"+ key+"->"+value); SYSTEM_CONFIG.put(key,value); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { SysProperties sys = new SysProperties(); sys.run(); } }
問題的核心在於:file.lastModified,如果當前map中儲存的時間戳跟本次載入的不一致,就重新load一把;
然後哦哦~
相關推薦
修改配置檔案不用重啟tomcat
專案需要頻繁更新配置檔案,每次改完需要先停tomcat,在重啟很麻煩~~~ 今天抽個空研究了一下,發現很多人都遇到類似的問題,然後綜合了下各個網站的解決辦法,我整了一個demo出來了,廢話不多說先上圖: 說明:配置檔案第一次只有一個屬性,test;待執行完後又新增一個新屬
修改Java檔案不用重啟Tomcat服務的方法
在tomcat的安裝目錄的conf檔案中找到server.xml這個檔案,在 <Host>結點裡面加上 <Context docBase="工程物理路徑" path="/工程名" reloadable="true" source="org.eclip
[JAVA]修改Java檔案不用重啟Tomcat服務的方法
修改Java檔案不用重啟Tomcat服務的方法 在使用Eclipse+Tomcat開發Java專案的時候常常會碰到這樣的情況,已修改Java檔案Tomcat就會自動重啟,接下來就是漫長的等待服務重啟完畢。那其實大多數的Java檔案修改是沒有必要重啟服務的,只有一
eclipse mavenWeb專案真正實現熱部署(修改java程式碼和頁面檔案不用重啟tomcat)
1.前言 先說熱部署的含義: 熱部署原來被定義為:tomcat啟動後,如果你往webapps目錄下,新增新的專案,tomcat會實現自動將其釋出的功能,這時,就叫做熱部署。 網上所實現的熱部署
windows設定開機啟動指令碼修改配置檔案和重啟服務
有一臺動態ip的測試機器,上面部署Nginx,然後每次重啟機器後ip總會變動,需要改nginx.conf配置檔案和重啟nginx服務。 所以要解決這個問題,想到的解決方法: 1、python指令碼來
Java中Web程式修改配置檔案不重啟伺服器的方法
1. 配置tomcat伺服器:修改tomcat的部署配置為:從不自動釋出,禁用Web模組的自動從新裝入為:禁用 2. 在tomcat執行配置上新增vm引數:-noverify -javaagent:D:\RUNTIME\jrebel\jrebel.jar -Dmyproject.root=D:/pro
IDEA修改java檔案後 不用重啟Tomcat服務便可自動更新
一、問題使用IDEA開發Java時,修改java檔案後,需要重啟tomcat,程式碼方生效,重啟tomcat耗時較長,嚴重影響開發效率。二、解決1、配置tomcat時,on 'update' action和on frame deactivation選項都選擇 update c
不用重啟Tomcat服務實現修改Java檔案後自動部署
可以修改類不用重啟Tomcat載入整個專案(手工啟動) 1.配置reloadable=true(自動過載) 2.使用Debug模式,前提是僅限於區域性修改。(修改類不用重啟--熱載入) 在使用Eclipse+Tomcat開發Java專案的時候常常會碰到這樣的情況,已修改Ja
為什麼修改jsp不用重啟tomcat,而修改servlet要重啟tomcat
servlet和jsp本質都是servlet,執行時都是執行.class檔案。但是它們的部署方式不一樣。 servlet是先編譯後部署,修改完以後,MyEclipse進行編譯,然後部署.class檔案到servlet容器中。如果web伺服器已啟動,則之前class已被servl
idea配置熱載入,開發不用重啟tomcat,tomcat配置熱載入,釋出專案不用重啟tomcat,在自己專案的context配置jdbc資料來源
在conf/server.xml裡面的Host加入Context節點,設定以下屬性 path="/project_name" docBase="project_name" debug="1" reloadable="true"> 然後在Context節點加入以下子節點 <Watche
maven專案 修改properties屬性檔案不用重啟
1.專案中經常變化的值, 比如 圖片伺服器路徑啊‘第三方的路徑’,都需要放到 屬性檔案裡, 怎樣才能不用重啟 修改 屬性檔案呢, public static String getPropertiesValue(String name, String key) {
用jrebel實現 jvm熱部署,修改類不用重啟tomcat
我們用eclipse開發時經常遇到一個麻煩的問題是修改類檔案後需重啟tomcat才能生效,即使使用一些tomcat外掛,有時修改了方法名或添加了類,也需要重啟。使用獲得jolt大獎的作品jrebel,就能輕鬆實現 jvm熱部署,無論任何情況修改類都不用重啟tomcat 首先
MyEclipse中web開發修改類檔案和配置檔案不重啟伺服器的方法
在java web實際開發中我們在修改配置檔案與java程式碼時往往會重新部署或者重新啟動tomcat伺服器,為了提高開發效率,現總結以下方法以在網路共享(高手莫看) 一 、修改struts2配置檔案不用重啟方法 方法1: 在src目錄下新建一個檔案struts.pro
groovy修改代碼不用重啟通過監聽記錄改變時間重新加載
.com 寫法 ges java代碼 好的 jpg 一個 png blog groovy是一個跟java 很像的腳本語言,基於jvm,寫法比java隨意一點可以跟java代碼很好的集合,如果項目中有用到規則可以在控制層使用groovy編寫代碼,調用規則。 在spring-m
Eclipse下設定tomcat,修改Java程式碼不必重啟tomcat
以前一直都是使用MyEclipse,在新公司原來專案比較大,使用MyEclipse無論是啟動還是在編碼過程中都非常慢,優化了也是。所以換了Eclipse,速度雖然提高了,但是有點非常不友好,就是不管我怎麼修改Java程式碼,哪怕只有僅僅一行程式碼都需要重新啟動,才能使修改程式碼生效,而這點MyEcl
前端熱部署(更改前端程式碼,不用重啟tomcat,重新整理瀏覽器就可以)
注:如果使用Springboot可以是一個devtool實現熱部署 主要在於 On frame deactivation選項配置選擇為 Update classes and resourses(當且僅當在Deployment配置頁,對應的目的war形式配置為exploded
IntelliJ IDEA - 熱部署(更新HTML/JSP/JS/CSS程式碼、不用重啟Tomcat)
前言 前端熱部署(更改前端程式碼,不用重啟tomcat,重新整理瀏覽器就可以)。 步驟 Ps:主要在於 On frame deactivation 選項配置選擇為 Update classes and resourses (當且僅當在Deployment配置頁
Eclipse下的maven工程自動熱部署方案(不用編譯,不用重啟tomcat)
今天接了一個小小的web工程專案,就基於eclipse+maven的開發環境搭建了一個javaweb專案。結果在開發的過程中無比痛苦:修改程式碼-重新構建-重啟tomcat-修改程式碼-重新構建-重啟tomcat。。。。簡直不能再浪費時間了,於是在網上搜了搜怎麼去實現mav
IntelliJ IDEA 在使用manven後的糾結(每次修改程式碼都要重啟tomcat才能看效果嗎?),請各位大俠來看看問題
在加入manven後每次都要從其tomcat 或者重新package才能看到修改的效果這樣對於程式原來說很瘋狂,反正我是快瘋了,都不想用manven了 。 直接上圖: 上圖為沒用manven之前的專案 project Structure的配置也在,每次直接編譯 在tomca
解決jsp上傳檔案,重啟tomcat後文件和資料夾自動刪除
吼吼,我遇到的問題是這樣的...... 我寫了一個圖片上傳的方法,上傳時,判斷沒有這個目錄就自動建立一個。 然後開始上傳圖片,能成功,能在伺服器找到資料夾和相應的檔案。但是,重啟專案,或者清理快取之後,圖片和資料夾就會自動被刪除,不見了。 先說解決辦法吧,後面在分析: 1