問題描述
讀取 Java Webapp 和 Java 普通應用程序中的通用外部屬性文件 (Read common external property file in Java Webapp and java normal app)
我知道這個問題已經回答了很多次,最有用的答案如下,
在基於 servlet 的應用程序中放置以及如何讀取配置資源文件?
但是,我們有一些特殊要求如下,
- Webapp 會被部署到 tomcat 中。
- 普通的 .jar 形式的 java 應用程序會放在文件夾 /myapp 下
- myappConfig.property 文件將放在 /myapp 下
客戶端機器上的目錄結構
/myapp
/myapp.jar
/assests/myappConfig.property
/tomcat/webapps/myapp.war
基本上myapp .jar 和 myapp.war 將訪問 MySql 數據庫連接和數據庫操作的 sql db 連接值。
從 myapp.jar 訪問 myappConfig.property ‑‑> 工作正常
File jarPath = new File(Myapp.class.getProtectionDomain().getCodeSource().getLocation().getPath());
String propertiesPath = jarPath.getParent();
System.out.println(" propertiesPath‑" + propertiesPath);
mainProperties.load(new FileInputStream(propertiesPath + "\\assets\\myapp.property"));
任何人都可以幫助/建議如何實現,
從 mywebapp 訪問 myappConfig.property 文件,
如果 myappConfig.property 文件中的運行時更改不需要 myapp.war要重新部署
提前感謝您的幫助。
編輯
以下是我們的步驟想把項目交付給客戶。
下面是我的應用目錄
/myapp /myapp.jar /assests/myappConfig.property /tomcat/webapps/myapp.war
使用一些打包工具將所有內容打包到一個包中。
在客戶端計算機的任意位置運行此包,它將具有與上述相同的目錄結構
在這裡,我不想在 webapp 或 tomcat 中為“/assests/myappConfig.property”硬編碼任何位置
我可以閱讀的普通 Java 應用程序屬性文件,但對於 wepapp,我不清楚如何做到這一點?
普通的 Java 應用程序我可以讀取屬性文件,但對於 wepapp,我不清楚如何做到這一點?
普通的 Java 應用程序我可以讀取屬性文件,但對於 wepapp,我不清楚如何做到這一點?
參考解法
方法 1:
You can add a <context>
to tomcat/conf/server.xml (in this example, linux path):
<Context docBase="/home/yourusername/tomcat/assests" path="/assets" />
If you are using Windows:
<Context docBase="C:\path\to\myapp\assets" path="/assets" />
And then you can access it like any other resource within your webapp (e.g.: /assets/myappConfig.property).
If you are using JDBC for example, you could store the connection properties in a Singleton and request it from there, and that class could take care of change checks on that file.
(by School Boy、Peter)