[英]Adding a property file in the shared folder in tomcat 8 and using it in a Spring MVC web application
我有一個Java Spring MVC Web應用程序。 我使用application.properties文件來設置一些屬性值。 現在我試圖讓屬性獨立於war文件。 我在tomcat下創建了一個新的文件夾shared / classes,如下所示。
在catalina.properties
文件中,我添加了shared.loader=${catalina.base}/shared/classes
。
在我的root-context.xml
文件中,我添加了
<context:property-placeholder location="file:${catalina.base}/shared/classes/application.properties"/>
但是我收到以下錯誤:
ERROR o.s.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: E:\projects\smartwcm\workspace-20163101-eclipse-wp\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\shared\classes\application.properties (The system cannot find the path specified)
我該如何解決這個問題?
這可能是eclipe創建的Servers文件夾的限制之一。 實際放置此文件夾內容的位置
.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf
我在本地試過這個,eclipse似乎沒有發布我創建的任何文件夾。 eclipse Tomcat v8.0 Server at localhost-config
命名文件夾Tomcat v8.0 Server at localhost-config
非常具體。 這也可能意味着屬性和配置文件是唯一可接受的系統文件。 我可以通過將application.properties
文件放在與catalina.properties
相同的級別來使一切工作得很好。 然后我用eclipse發布,然后當我查看臨時文件夾時,應用程序文件就在那里。 無論如何,似乎沒有特定的理由讓您的文件在shared/classes
。 畢竟,據我所知,它們是要在服務器中共享的屬性,所以我想說它們的正確位置在config文件夾中。
看看這個answear。 也許它會有所幫助
看起來$ {catalina.base}被解釋為:
E:\\項目\\ smartwcm \\ workspace下-20163101-Eclipse的wp.metadata.plugins \\ org.eclipse.wst.server.core \\ TMP0
您是否在正在運行的計算機上設置了$ CATALINA_BASE變量?
我想你需要指向$ {catalina.home}。 Catalina.base是安裝tomcat的地方,catalina.home是運行tomcat的地方。 (這是由於tomcat多主機環境;您可以擁有一個tomcat和多個主機的安裝程序)。
當遇到這樣的問題時(如果你在Windows上),你應該使用Sysinternals套件中的程序FileMon。 您應該設置一個fiter:“PATH包含YOURFILE.NAME”並查看查找文件的搜索路徑。 然后,您可以輕松找出java進程嘗試查找文件的位置並將其放在相應的文件夾中。
但是,最好在服務器home / base之外的某處設置一個普通目錄,並通過絕對OS文件路徑引用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.