我正在編寫一個由Tomcat 6託管的JSF 2.1 Web應用程序。如何向Tomcat提供複雜的運行時參數?
在運行時,我想檢索一組與外部服務相關的複雜參數。
在開發時,我不知道這些參數會是什麼,或者會有什麼樣的參數。
參數將由我們的操作人員設置,因此必須在.war文件之外定義。
我認爲context.xml會有所幫助(即TOMCAT_HOME/conf/Catalina/localhost/MyWebApp.xml
),但是這隻能接受標量參數,並且似乎沒有任何方法可以迭代它們。
這是我想在運行時訪問的一個例子。
<services>
<service id="bbc" name="BBC Weather" url="http://www.bbc.co.uk/weather/" />
<service id="underground" name="Weather Underground" url="http://www.wunderground.com/weather/api/">
<login username="test" password="test" />
</service>
<service id="network" name="The Weather Network" url="http://www.theweathernetwork.com/">
<method type="post" />
</service>
</services>
有沒有萬無一失的方法,我可以編程方式獲得對TOMCAT_HOME/conf/Catalina/localhost/MyWebApp.xml
訪問?我知道how to get the path to TOMCAT_HOME,但我們的操作人員可能會選擇更改Tomcat主機或引擎名稱。
作爲一種解決方法,我總是可以按如下方式向context.xml中編寫單個參數。
<Parameter name="config.file" value="C:/Program Files/Apache Software Foundation/Tomcat 6.0/conf/Catalina/localhost/MyConfigFile.xml" />
但是,這也是錯誤的加分,在安裝說明一個額外的步驟,需要維護等
我敢肯定,必須有一個簡單的方法來做到這一點,有什麼我錯過了嗎?
在此先感謝,亞當。