2010-10-29 72 views
10

問題如果我們有多個XML配置文件,DispatcherServlet如何工作?

如何,如果我們有多個XML配置文件,那麼,如何Spring應用上下文加載它們,並作用於他們的DispatcherServlet的工作?

場景:

在我的情況下,我們有一個應該是全球是應用程序應該有AP{Asia-Pacific}, EM{Europ-Middleeast}, CA{Canada} and LA{Latin America}版本的應用程序。

目前,我們已申請是EM一個區域及其擁有XML Configuration File i.e, em-servelt.xml再有就是通用web.xml文件現在爲AP region,我們有另一個ap-servlet.xml文件的方式既em-servlet.xmlap-servlet.xml file將有相同的bean的名字,但他們會指向不同包中的控制器,例如,em會指向com.em.DomainController之類的東西,而ap將指向com.ap.DomainController

所以我的問題是

請求如何被映射到不同的控制器和要求是如何被認可的,這樣就應該從AP-servlet.xml中或EM-servlet.xml中讀?

我希望能夠清楚地說明我的問題。

+0

這個問題有什麼問題嗎? – Rachel 2010-10-29 19:12:45

+0

這不是很清楚。你想達到什麼目的?你想一次有幾個'DispatcherServlet',或者什麼? – axtavt 2010-10-29 19:45:24

回答

24

web.xml文件可以配置多個DispatcherServlet實例,每個實例都有自己的配置。每個DispatcherServlet實例配置一個與其他DispatcherServlet實例分開的WebApplicationContext,因此您可以使用相同的bean名稱而不影響其他應用程序上下文。

<!-- configured by WEB-INF/ap-servlet.xml --> 
<servlet> 
    <servlet-name>ap</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<!-- configured by WEB-INF/em-servlet.xml --> 
<servlet> 
    <servlet-name>em</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

您還必須配置web.xml來請求映射到相應的DispatcherServlet。例如,每個地區可能有不同的URL路徑。

<servlet-mapping> 
    <servlet-name>ap</servlet-name> 
    <url-pattern>/ap/*</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>em</servlet-name> 
    <url-pattern>/em/*</url-pattern> 
</servlet-mapping> 
+0

這是有道理的。 – Rachel 2010-10-30 18:41:23

2

web.xml文件控制DispatcherServlet使用的上下文文件。如果您將web.xml配置爲DispatcherServlet並且名稱爲em,則默認情況下它會使用em-servlet.xml加載Web上下文。

你的問題有點令人困惑,你真的想要做什麼 - 你想讓所有的「版本」在應用程序的同一個實例中可用嗎?

如果是這樣,那麼您描述的方法對於如何呈現多種語言/全球化您的應用程序聽起來並不正常。傳統上,您只需要一個應用程序實例和所有控制器/實例,然後在顯示級別處理翻譯用戶可見消息。 Spring對此有着出色的支持。

如果您的目標是讓應用程序的單個實例爲所有這些語言/語言環境提供請求,那麼您聽起來好像可以取消很多這種冗餘。

+0

我想讓所有「版本」在應用程序的相同實例中可用? – Rachel 2010-10-29 20:24:50

+0

另外不同地區有不同的業務邏輯,所以我們不能在顯示層面做到這一點 – Rachel 2010-10-29 20:25:25

相關問題