當前我的應用程序在Tomcat 6.0和Websphere Application Server 8.0上運行。
如何在WAR/EAR文件之外配置我的屬性文件?
現在屬性文件被放置在webapps/WEB-INF/
目錄中,並在commons configuration framework
的幫助下被訪問。從多個應用程序服務器的戰爭/耳朵外部訪問屬性文件
回答
正如你已經在使用公共資源配置API,它已經提供了一個鉤狀他們已經低於其documentation for optional configuration resources解釋。
這種方式是在您的默認外的出廠配置仍駐留在Web應用程序本身的意義遠穩健。但是你仍然可以使用外部配置XML文件覆蓋任何你想要的屬性。
在我們的項目,我們通過提供在注入外部config.xml文件到使用系統級性能的系統中廣泛使用這個。我們做了如下的事情。
<configuration>
<header>
<result forceReloadCheck="true">
<nodeCombiner
config-class="org.apache.commons.configuration.tree.OverrideCombiner" />
</result>
</header>
<system/>
<configuration fileName="${ext.config}" forceReloadCheck="true" config-optional="true">
<reloadingStrategy refreshDelay="10000"
config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy" />
</configuration>
<configuration fileName="com/company/config/config.xml"></configuration>
</configuration>
此XML配置文件可以確保你的web應用加載成功地與外的出廠配置,並在同一時間,可選檢查的external.config系統屬性,它可以指向一個完全替代配置覆蓋Web應用程序中定義的任意屬性。
你可以
- 使用的Web應用程序級別定義的屬性設置爲指向該文件(這樣的數據中心可以改變位置)
- 就直接讀取(無需額外的庫)
例子:
final Properties p = new Properties();
p.load(new FileInputStream(new File(System.getProperty("..."))));
您應該只重從Web層(Servlet,JSP)中加入它,但不加入EJB。
至於WebSphere,您可以在控制檯中添加一個Web應用程序特定屬性。它深藏不露,尋找「應用程序服務器 - xxx - 進程定義 - JVM - 自定義屬性」。至於Tomcat,我並不知道web應用程序的具體方式,但是您可以在.../bin/setenv.sh
(Windows的setenv.bat
)中定義系統屬性。我通常會預先附加一個唯一的前綴(例如應用程序的名稱),以免這些干擾。
如何在Web應用程序級別定義它? –
@HimanshuYadav我已經更新了答案。 – Beryllium
您可以通過定義系統屬性輕鬆實現該功能,我們稱之爲configLocation
。應用程序應該讀取由系統屬性指定的位置,而不是從類路徑中讀取屬性文件。當然,您需要使用定義的系統屬性啓動Tomcat和WebSphere:-DconfigLocation=/path/to/config.properties
。
請注意,您還應該處理該文件不存在或無法讀取的情況。可能的選項包括無法啓動應用程序,或回退到故障安全配置。
- 1. 耳朵下的戰爭部署序列
- 2. 如何從耳朵創造戰爭
- 3. 如何在戰爭或耳朵外部配置屬性或數據源
- 4. 如何從Java EE服務器(JBoss)上同一耳朵中的不同戰爭中訪問文件?
- 5. 如何在同一應用程序服務器上從一隻耳朵訪問另一隻耳朵的方法
- 6. java的web應用程序架構,許多戰爭的耳朵裏面或一場戰爭與許多罐子
- 7. 用戰爭,耳朵和依賴罐子的Maven安裝程序
- 8. 多戰爭耳
- 9. 用於測試的開源戰爭和耳朵文件
- 10. 螞蟻戰爭和耳朵不生成
- 11. 將額外的戰爭包裝在耳朵中
- 12. 耳朵文件是一次構建和部署在多個應用程序服務器的東西?
- 13. 在應用程序服務器上部署戰爭
- 14. jboss服務器上的耳朵文件部署失敗
- 15. Wildfly - Maven的插件只耳朵和戰爭
- 16. 從外部應用程序訪問嵌入式Solr服務器
- 17. Maven的耳朵/戰爭的問題,「部署在保存」不工作
- 18. Tomcat部署到遠程服務器與戰爭文件爲url
- 19. 爲什麼要用耳朵代替戰爭?
- 20. 如何從戰爭solaris服務器訪問windows的文件系統?
- 21. 使用maven爲同一項目構建戰爭和耳朵文件
- 22. 相同的Spring bean實例,用於狂野地部署耳朵和戰爭
- 23. 戰爭中的一個階級有沒有辦法從它的耳朵中訪問META-INF?
- 24. Eclipse的虛擬應用程序部署Vs的耳朵部署
- 25. 從戰爭文件名中分離戰爭應用程序名稱
- 26. Wildfly10而部署的Oauth服務器的戰爭文件
- 27. 從外部應用程序/ Javascript訪問MS CRM Web服務
- 28. 在單個耳朵中部署struts和JSF應用程序
- 29. 從戰爭容器中加載外部的.xhtml文件(Facelets)
- 30. 從回購部署戰爭到遠程服務器
你是如何定義'$ {ext.config}'的?作爲一個JVM爭論'-Dext.config'? –
config.xml中的 標記可確保您可以訪問所有屬性。這就是爲什麼我們應該提及它作爲首先加載。您可以將ext.config定義爲-Dext.config = –
saratbeesa