簡體   English   中英

從不同Tomcat上的Tomcat Web應用程序讀取文件

[英]Read a file from Tomcat webapps on different Tomcats

考慮以下幾點:我得到了一個csv文件。 該文件存儲在tomcat wepapps目錄中。 該目錄的路徑取決於所使用的計算機。 有些用戶為其Tomcat使用不同的位置並使用不同的名稱。 我要實現以下目標。

通過Spring,我執行了以下操作:我執行了一個操作,該操作將一些數據從csv導入數據庫。

<bean id="setCsvPathAction" class="custom.action.importcsv.SetCsvPathAction">
   <property name="csvPath" value="C:/temp/test.csv"/>
</bean>

這對我來說很好。 為了使該路徑對其他人更可配置,我得到了一個system.properties文件。 使用此文件,您可以輕松地覆蓋屬性:

setCsvPathAction.csvPath=#{tomcat_home}/webapps/test.csv

那就是我想要的。 我希望該路徑位於Tomcat webapps目錄中。 上面的方法不起作用。 你有什么提示如何實現這一目標嗎?

大多數使用tomcat的人都會設置CATALINA_HOME環境變量。 您可以查詢此環境變量並檢索值。

String tomcat_home = System.getenv("CATALINA_HOME");
if(tomcat_home){
    setCsvPathAction.csvPath=tomcat_home+"/webapps/test.csv"
}

注意:不能保證在每個使用tomcat的系統上都設置此環境變量

有關getenv()的更多信息-http: //docs.oracle.com/javase/7/docs/api/java/lang/System.html#getenv%28%29

如果要放在web apps文件夾中,則也可以使用類加載器來獲取本地路徑,因此您無需進行任何配置。

someObject.getClass()。getClassLoader()。getResourceAsStream(“ path / refferenced / to / app / root /”);

.properties文件的解決方案是:$ {catalina.home}接下來,我需要一個獨立於系統環境的FileInputStream。 我嘗試了以下方法:

public class environmentTest {

    public static void main(final String[] args) {
        System.out.println(System.getenv("CATALINA_BASE"));
    }

}

null在控制台上打印。

Person類包含jpg文件的名稱。 該文件位於webapps文件夾中。 我希望路徑獨立於所使用的計算機。 我嘗試了以下方法:

File file = new File(System.getenv("CATALINA_HOME") + "/webapps/" + person.getPhoto());
FileInputStream fileInputStream = new FileInputStream(file);

遺憾的是,這是行不通的,因為正如unekwu所說,此環境變量未在所有系統上設置。 您知道在這種情況下我能做什么嗎?

暫無
暫無

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

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