2013-10-23 35 views
0

我想覆蓋一個quartz-jobs.xml文件,我在一個Linux x86機器下的JBOSS中部署了一個WAR文件。Linux覆蓋Java資源文件

我已經試過幾件事情,但我一直沒能得到正確的路徑正確地做到這一點:

寫入錯誤:/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資源?

在此先感謝

回答

2

爲什麼它不工作的原因是因爲要修改的資源類加載器從閱讀。 這不會修改戰爭的資源項目。

您可以通過使用標準的java命令 「罐子UF」 更新戰( http://docs.oracle.com/javase/tutorial/deployment/jar/update.html

的步驟可以是:

  1. 保留修改過的 「石英jobs.xml」 在同一目標戰爭目錄。

  2. 創建執行人(quartz_updader.sh)和add命令用於將正確的目錄和更新的jar:

    CD#主任那裏,戰爭和更新的XML-駐留

    罐子UF#目標戰石英jobs.xml

  3. 給正確的權限(quartz_updader.sh)爲執行。使用調用Runtime.getRuntime()。EXEC(命令)從Java

  4. 執行.SH 其中命令=須藤./quartz_updader.sh

上面是對假設 「石英jobs.xml」直接處於戰爭而不是某個相對位置。 如果是在相對位置,修改上述方法:

  • 創建#相對位置#層次旁邊#目標的戰爭,並保持新 「石英jobs.xml」在它之下。
  • 修改sh文件的jar更新命令:罐子 UF#目標戰#相對LOC /石英jobs.xml
+0

在Windows中,我可以僅僅通過細節「石英工作完全更新此文件。 xml「作爲文件路徑。但是,在Linux中,不可能同樣工作。也許最好是重新安排工作,而不是更新這個文件:S。感謝您的快速回答。 – aloplop85