簡體   English   中英

Linux覆蓋Java資源文件

[英]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

步驟可以是:

  1. 將修改后的“quartz-jobs.xml”保存在target-war所在的目錄中。

  2. 創建一個執行程序(quartz_updader.sh)並添加用於轉到正確目錄和更新jar的命令:

    cd#director-where-war-and-updated-xml-reside

    jar uf#target-war quartz-jobs.xml

  3. 授予(quartz_updader.sh)執行權限。

  4. 使用Runtime.getRuntime()。exec(command)從java執行.sh其中command = sudo ./quartz_updader.sh

以上是假設“quartz-jobs.xml”直接在戰爭中而不是某些相對位置。 如果它位於相對位置,請修改上述方法:

  • 在#target-war旁邊創建#relative-location#hierarchy,並在其下面保留新的“quartz-jobs.xml”。
  • 修改.sh文件jar更新命令:jar uf#target-war#relative-loc / quartz-jobs.xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM