Quiero usar dos contextos web diferentes de Spring, cada uno tiene su propia contextConfig, servlet de primavera y filtro, que se deben asignar a diferentes URL. Tengo un proyectoDos contextos Spring separados para una aplicación webapp
- Griales estándar, asigna a '/'
- Y una aplicación web de Primavera existente, que quiero asignar a
/extra/
Sé que puede implementar tanto en un Tomcat , pero estoy buscando una forma de hacer una aplicación (una war
, etc.), porque puede simplificar nuestra implementación y proceso de desarrollo.
Estas aplicaciones no necesitan compartir frijoles ni nada, deben estar completamente separadas. Ambos tienen DispatcherServlet y DispatcherFilter (y ambos usan Spring Security, pero con una configuración diferente)
¿Cómo puedo configurar web.xml
para dicha aplicación web?
He intentado añadir nuevo filtro:
<filter>
<filter-name>extraSpringSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.extraSpring</param-value>
</init-param>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>extraSecurityFilterBean</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>extraSpringSecurityFilterChain</filter-name>
<url-pattern>/extra/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
y despachador de primavera servlet:
<servlet>
<servlet-name>extraSpring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>springConfigLocation</param-name>
<param-value>classpath:extra-spring-web.xml</param-value>
</init-param>
</servlet>
Dónde: xml
- dos contexto en ruta de clase (en el interior exra tarro de biblioteca):
- extra-spring-w eb.xml
- extra-spring-security.xml (!!! cómo debería configurarlo?)
- extra-primavera-security.xml
- es bastante estándar de configuración de la primavera de Seguridad
- han configurado frijol
extraSecurityFilterBean
- tienen dependecy a los granos de contexto (-web pero no es necesario que sea)
está semi-trabajando ahora:
- como veo a partir de troncos,
extraSpring
servlet se carga correctamente los granos deextra-spring-web.xml
- pero después de acceder url
/extra/
tengoNoSuchBeanDefinitionException
: No se bean llamado 'extraSecurityFilterBean' se define.
Entonces, la pregunta, ¿cómo puedo definir el contexto para DelegatingFilterProxy
? Incluso traté de agregar estos archivos al contexto principal (contextConfigLocation param), no es lo que estoy buscando, pero no funcionó.
He echado un vistazo a las fuentes de DelegatingFilterProxy, pero no está claro cómo carga el contexto.
No creo que tengas que editar el archivo grails web.xml. Puede obtener lo que desea reproducir con Tomcat y Apache. Implemente las dos aplicaciones por separado en tomcat '/ app1' y '/ app2'. En Apache, todos los mapas solicitan '/ **' => '/ app1/**' excepto para aquellos con '/ extra/**' extra extra = **/app2/** ' –
Sí, lo sé, gracias. Pero estoy seguro de que debería haber una manera de usar solo un web.xml/put both en uno WAR –
¿Cómo está cargando 'extra-spring-security.xml'? No lo ha nombrado en su fragmento web.xml, ¿es un '' en 'extra-spring-web.xml'? –