2017-07-20 26 views
1

我正在編寫利用其他Web服務(其他平臺)的Java Web服務,所以我必須在我的Java Web服務中調用這些API並獲得了url(靜態IP)。我正在考慮在屬性文件中保留包含IP的常見url部分。但是有沒有辦法在tomcat中保留這些屬性或URL部分?哪個更好的方式來存儲網址?在哪裏可以保存在Java Web服務中使用的url?

+0

你可以把它們放到ServletContext中。這樣可以使用Web應用程序容器的管理工具進行配置。但這些東西通常很麻煩。就個人而言,我會使用Typesafe Config,將所有默認值放入類路徑(在WAR文件中),並允許通過主機文件系統上衆所周知位置的文件覆蓋它們(如果在WAR發生後需要更改它已建成)。 – Thilo

回答

2

我一直把這樣的常量定義到JNDI變量中。對於Tomcat來說,這意味着在context.xml中聲明它們通常這些常量在生產環境,測試環境和開發環境中是不同的,所以它們應該與服務器實例綁定,而不是與代碼綁定。另外,配置信息可能很敏感(用戶名和密碼等),所以如果暴露給任何可以訪問代碼庫的人,這是一個安全問題。

不幸的是,沒有關於J2EE容器如何設置和維護JNDI變量的標準。對於Tomcat,它們在context.xml中聲明。對於IBM Websphere,它們是管理控制檯設置。對於Oracle Weblogic,它們將進入需要編譯到.war文件中的weblogic.xml文件。

如果你足夠幸運,不必在Weblogic上部署,JNDI就非常棒。您的.war可以部署到任何環境,並將爲該服務器實例選擇正確的設置。

如果需要部署到Weblogic,你有以下幾種選擇:

  • 使用屬性在文件系統上的「衆所周知」的文件位置由@Thilo
  • 的建議有你部署腳本將打開.war文件並將xml定義文件替換爲適用於目標環境的文件。

請注意,像數據庫連接這樣的資源有些更加標準化。所有J2EE容器都允許您通過管理控制檯設置數據源,或者通過編輯context.xml來設置數據源。您的代碼只需要知道JNDI名稱,而不需要知道數據庫連接的詳細信息。

相關問題