創建從屬性文件中讀取配置參數的Tomcat部署的接受實踐是什麼?配置Tomcat以使用屬性文件加載數據庫連接信息
能夠提供WAR文件並指定客戶端只需要在特定目錄中創建或編輯屬性文件將會很好。這是一種有點經常的做事方式嗎?有沒有比這更好的方法?
創建從屬性文件中讀取配置參數的Tomcat部署的接受實踐是什麼?配置Tomcat以使用屬性文件加載數據庫連接信息
能夠提供WAR文件並指定客戶端只需要在特定目錄中創建或編輯屬性文件將會很好。這是一種有點經常的做事方式嗎?有沒有比這更好的方法?
我們經常通過提供一個WAR和一個上下文XML文件來分發web應用程序,該文件被放置在您的tomcat/conf/Catalina/localhost
目錄中,並且可以從任何路徑加載webapp。有一個參考文件here。這提供了以下優點:
如果你真的想要一個屬性文件,你可以設置一個參數在上下文X中ML文件指向您的屬性文件,讀取ServletContextListener中的參數,然後讀入屬性文件。
我們處理這個問題的方法:
配置的連接池一個META-INF/context.xml的文件,這是一個小更前面的工作不是簡單地改變環境。 XML連接信息直接,但隨着時間的推移它應該得到回報。一個開發服務器將被設置爲它的GlobalNamingResources指向開發,並且一個測試服務器指向測試等。然後,可以將相同的WAR文件複製到每個服務器而不用編輯任何東西。
這不是使用屬性文件,但我認爲它達到了相同的目標。允許用戶/客戶設置數據庫連接信息。 GlobalNamingResource的
例子:
<Resource name="jdbc/dbconnection" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1546:SID"
username="scott" password="tiger" maxActive="8" maxIdle="4"
validationQuery="select 1 from dual"
testOnBorrow="true"/>
戰爭文件context.xml中的示例:
<Context path="/MyWebApp" docBase="MyWebApp" debug="5" reloadable="true">
<ResourceLink name="jdbc/dbconnection" global="jdbc/dbconnection"
type="javax.sql.DataSource"/>
</Context>
這是一個很好的做法存儲配置了戰區。在我們的WAR中,我們有一個默認位置來查找屬性文件。如果缺省值不起作用,則可以通過在conf/Catalina/[host]目錄中的上下文片段中定義的JVM參數或上下文參數來指定位置。例如,
<Context docBase="/server/app.war"
swallowOutput="true" unpackWAR="false" useNaming="false">
<Parameter name="config-file" value="/config/db.properties" override="true" />
</Context>