2010-10-29 10 views
10

Preguntas¿Cómo funciona DispatcherServlet si tenemos varios archivos de configuración XML?

¿Cómo DispatcherServlet trabajo si tenemos archivo de configuración XML múltiple así que ¿cómo Aplicación primavera Contexto ellos y actos carga sobre ellos?

Escenario:

En mi caso, tenemos una aplicación que se supone que es de aplicación mundial debe tener AP{Asia-Pacific}, EM{Europ-Middleeast}, CA{Canada} and LA{Latin America} versiones.

Actualmente, tenemos Solicitud de una región que es EM y su tiene su XML Configuration File i.e, em-servelt.xml y entonces no es genérico web.xml archivo ahora para AP region tenemos otro archivo ap-servlet.xml y por cierto tanto em-servlet.xml y ap-servlet.xml file tendríamos mismos nombres de frijol, pero que apuntaría a Controladores en diferentes paquetes, por ejemplo, em estaría apuntando a algo como com.em.DomainController y ap estaría apuntando a com.ap.DomainController.

Así que mi pregunta es

¿Cómo se asigna a la petición de diferentes controladores y cómo petición está siendo reconocido por lo que debería leer de AP-em-servlet.xml o servlet.xml?

Espero poder indicar claramente mi pregunta.

+0

¿Hay algún problema con la pregunta? – Rachel

+0

No está muy claro. ¿Qué está tratando de lograr? ¿Desea tener varios 'DispatcherServlet's a la vez, o qué? – axtavt

Respuesta

24

El archivo web.xml puede configurar varias instancias DispatcherServlet, cada una con su propia configuración. Cada instancia DispatcherServlet configura un WebApplicationContext separado de otras instancias DispatcherServlet, por lo que puede usar los mismos nombres de bean sin afectar el contexto de otras aplicaciones.

<!-- 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> 

También debe configurar web.xml para mapear peticiones al DispatcherServlet apropiada. Por ejemplo, cada región podría tener una ruta URL diferente.

<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

Esto tiene sentido. – Rachel

2

Los controles web.xml de archivo que el archivo contexto DispatcherServlet está utilizando. Si configurar web.xml tener un DispatcherServlet con el nombre em, entonces por defecto que utiliza em-servlet.xml para cargar el contexto web.

Su pregunta es un poco confuso en cuanto a lo que le gustaría hacer realidad - ¿Quieres todas las "versiones" que esté disponible en la misma instancia de la aplicación?

Si es así, el método que usted describe suena poco ortodoxo de la manera de presentar varios idiomas/globalizado su aplicación. Tradicionalmente, solo tendría una instancia única de la aplicación y todos los controladores/instancias, y luego manejaría la traducción de mensajes visibles para el usuario a nivel de pantalla. Spring tiene un excelente soporte para esto.

Si su objetivo es tener una única instancia de la aplicación responde a la solicitud para todos los idiomas/locales, entonces suena como que podría acabar con una gran cantidad de esta redundancia.

+0

Quiero tener todas las "versiones" para estar disponibles en la misma instancia de la aplicación? – Rachel

+0

También diferentes regiones tienen una lógica comercial diferente y, por lo tanto, no podemos hacer eso en el nivel de visualización – Rachel

Cuestiones relacionadas