2013-05-03 40 views
0

好的,通常我們一直在爲每個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中)。底線,我希望每個網絡應用程序在獲取數據庫連接信息的地方都是「啞巴」,這樣我就可以將戰爭文件放在任何地方,並且它們會自動連接起來。

感謝您的任何建議。

回答

0

如果放置在$ CATALINA_BASE /你的數據源定義的context.xml相同定義被用於每個Web應用程序,所以你將有多個數據源。

如果你想多個應用程序之間的一個數據源共享,添加數據源定義爲在server.xml中一個全球性的資源和ResourceLink添加到$ CATALINA_BASE/context.xml的

META-INF/context.xml的不一個必需的文件。你可以完全放棄它。如果它存在,它必須是有效的context.xml文件(例如有效),但是 - 根據文檔 - 它不能包含任何路徑或docBase信息。

相關問題