簡體   English   中英

在tomcat 8的共享文件夾中添加屬性文件,並在Spring MVC Web應用程序中使用它

[英]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文件夾中。

看起來$ {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.

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