好的,通常我們一直在爲每個Web應用程序安裝一個Tomcat 7實例,因爲雖然它們幾乎是相同的代碼庫(真的是同一個應用程序),但我們承擔不起一個應用程序因更改而失效並影響其他客戶。這是使用相同數據源託管多個Tomcat 7應用程序的正確方法嗎?
但是安裝這麼多的雄貓越來越老了。所以我們認爲我們會把每個客戶羣的Tomcats數量減少到一個。
無論如何,我們的Hibernate配置使用JNDI,我認爲我會爲每個Tomcat組創建一個通用context.xml文件,並將其存儲在CATALINA_BASE/conf/context.xml
中,以便同一組下的所有應用程序可以共享相同的生產數據庫數據源。
我會在我的本地Tomcat上進行同樣的事情以進行開發,並且只要其中的上下文包含開發數據源信息。這樣我就可以將戰爭部署到生產服務器或本地開發服務器,而不必更改周圍的文件。
我假設如果我保留下面的計劃,我應該能夠把它關閉。
CATALINA_BASE/conf/context.xml # either contains production or dev connections
CATALINA_BASE/conf/Catalina/localhost/ # EMPTY - don't want apps overwriting data sources
CATALINA_BASE/webapps/<webapp>/META-INF/context.xml # almost BLANK.
這似乎是工作,到目前爲止(僅使用一個Web應用程序進行測試),但它看起來像在<webapp>/META-INF
context.xml中必須包含一個有效的上下文和上下文路徑。這是爲什麼?每個網絡應用程序的路徑必須不同嗎?目前,該文件中沒有連接信息(僅在conf/context.xml
中)。底線,我希望每個網絡應用程序在獲取數據庫連接信息的地方都是「啞巴」,這樣我就可以將戰爭文件放在任何地方,並且它們會自動連接起來。
感謝您的任何建議。