簡體   English   中英

有沒有一種典型的方法來處理Java應用程序中不同的tomcat實例的單獨配置?

[英]Is there a typical way to handle separate configurations for different tomcat instances in a Java app?

我們的系統分為不同的環境,每個環境作為一個單獨的Tomcat實例。

  • 開發(Windows)
  • 質量檢查:由我們的質量檢查部門(Linux)訪問
  • 生產:實時網站,客戶可以訪問。 (Linux)的

這些環境中的每一個都依賴於單獨的數據庫以及其他幾個Web服務。 這意味着我們需要跟蹤各種不同的URL,用戶名和密碼。 這些設置中有許多是在多個應用程序之間共享的,因此,將它們全部放在一個位置以消除重復是理想的。

現在,我們在應用程序本身中就有配置文件。 在構建應用程序時,我們使用Maven配置文件填寫不同的配置設置。 但這很笨拙,因為我們必須為每種環境構建不同的WAR。

在哪里存儲配置文件的好地方,以便我們可以將同一WAR文件部署到每台服務器?


我已經對此進行了大量研究。 但是我還沒有找到對我完全有意義的解決方案。

單獨的配置目錄

定義一個目錄來保存配置文件。 如linux上的/opt/config

我喜歡這個主意,但是如何告訴Tomcat這個目錄在哪里呢? 我看到了對context.xml引用,但是我看到的每個示例都將context.xml放在WAR的META-INF文件夾中。 有沒有辦法在WAR之外進行配置?

定義環境的系統屬性

這涉及到設置系統屬性,然后使用某種if / else或切換邏輯來加載適當的配置文件。 這似乎可行,但有點混亂。 但是,您在哪里/如何設置此屬性? 我通常使用./startup.sh啟動tomcat。 我要在該命令中添加參數還是在某處進行其他配置?

JNDI

我認為這不是我們的選擇。 我看過的每個教程似乎都依賴於LDAP或類似的東西。 據我所知,我們沒有可用的設置,似乎只為安裝六個配置文件設置了太多開銷。

使用系統屬性,該屬性指的是配置文件或目錄所在的位置。 在這種情況下,您可以輕松地管理不同的環境,並且不需要/不需要邏輯。

您的應用程序可以具有配置文件路徑的硬編碼值,這將允許運行應用程序而無需任何其他系統屬性。 但是,如果找不到必填數據,則應用程序應無法啟動。

關於環境之間的部分數據共享。 您可以按類別將數據分為幾個文件。 一些文件將被共享,而其他文件則針對不同的環境而被共享。 您甚至可以開發自己的數據文件之間的引用機制。

但是更好的方法是使用一些現成的軟件包。 例如,Spring框架支持非常靈活的配置機制。 但是,如果您已經有沒有Spring的應用程序,那么引入此框架進行配置似乎只是一個過大的選擇。 在這種情況下,請查看Apache Commons Configuration軟件包

與我的團隊一起工作,我們想到了一種更清潔的方法。 雖然我發現每個教程都將context.xml放在WAR中,但也可以將其放在Tomcat目錄的conf文件夾中。

這對我們有用,因為我們所有的服務器都是基於Tomcat的。 因此,每個服務器都可以擁有自己的context.xml,它具有指向該特定服務器上config文件夾的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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