[英]Linux Overwrite Java Resource file
我想覆蓋在Linux x86機器下部署在JBOSS中的WAR中的quartz-jobs.xml文件。
我嘗試了幾件事,但是我無法正確地找到正確的道路:
寫錯誤: /content/ThisIsMyWar.war/WEB-INF/classes/quartz-jobs.xml (沒有這樣的文件或目錄)
目前,代碼是這樣的(但我已經嘗試了一些沒有成功的事情):
String urlPath = null;
String filePath = null;
final URL url = classLoader.getResource("quartz-jobs.xml");
if (url != null) {
urlPath = URLDecoder.decode(url.getPath(), "UTF-8");
}
if (urlPath != null) {
filePath = urlPath;
} else {
filePath = new File("quartz-jobs.xml").getAbsolutePath();
}
final File file = new File(filePath);
LOG.warn(String.format("File %s absolute: %s", url.getPath(), file.getAbsolutePath()));
LOG.warn(String.format("File canonical: %s", file.getCanonicalPath()));
writer = new BufferedWriter(new FileWriter(file));
writer.write(newQuartzJobsXml);
是否可以在Linux中覆蓋XML資源?
提前致謝
它無法工作的原因是因為您正在修改從classLoader讀取的資源。 這不會修改war的資源條目。
您可以使用標准java命令“jar uf”更新war( http://docs.oracle.com/javase/tutorial/deployment/jar/update.html )
步驟可以是:
將修改后的“quartz-jobs.xml”保存在target-war所在的目錄中。
創建一個執行程序(quartz_updader.sh)並添加用於轉到正確目錄和更新jar的命令:
cd#director-where-war-and-updated-xml-reside
jar uf#target-war quartz-jobs.xml
授予(quartz_updader.sh)執行權限。
使用Runtime.getRuntime()。exec(command)從java執行.sh其中command = sudo ./quartz_updader.sh
以上是假設“quartz-jobs.xml”直接在戰爭中而不是某些相對位置。 如果它位於相對位置,請修改上述方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.