Desidero utilizzare in due diversi contesti Web Spring, ciascuno con propri contextConfig, servlet di primavera e filtro, che devono essere mappati su URL diversi. Ho un progettoDue contesti Spring separati per una webapp
- Grails standard, mappato '/'
- E una webapp Primavera esistente, che voglio mappare
/extra/
So che posso schierare entrambi in un unico Tomcat , ma sto cercando un modo per creare un'app (uno war
, ecc.), perché può semplificare il nostro processo di implementazione e sviluppo.
Queste applicazioni non hanno bisogno di condividere i fagioli o altro, dovrebbero essere completamente separati. Entrambi hanno DispatcherServlet e DispatcherFilter (ed entrambi utilizzano Spring Security, ma configurazione diversa)
Come posso configurare web.xml
per tale webapp?
ho cercato di aggiungere nuovo 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>
e la primavera dispatcher 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>
Dove:
- due contesto xml nel classpath (all'interno barattolo biblioteca exra):
- extra-molla-w eb.xml
- extra-spring-security.xml (!!! come dovrei configurarlo?)
- extra-primavera-security.xml
- è abbastanza standard config Primavera di sicurezza
- hanno configurato fagioli
extraSecurityFilterBean
- hanno dependecy di fagioli di contesto (-web ma non è necessario che sia)
E 'semi-ora di lavoro:
- come la vedo da tronchi,
extraSpring
servlet caricare con successo i fagioli daextra-spring-web.xml
- ma dopo l'accesso url
/extra/
ho ottenutoNoSuchBeanDefinitionException
: No fagiolo di nome 'extraSecurityFilterBean' è definito.
Quindi, la domanda, come posso definire il contesto per DelegatingFilterProxy
? Ho anche provato ad aggiungere questi file nel contesto principale (contextConfigLocation param), non è quello che sto cercando, ma non ha funzionato.
Ho dato un'occhiata ai sorgenti DelegatingFilterProxy, ma non è chiaro per me come carica il contesto.
Non penso che sia necessario modificare grails web.xml. Puoi ottenere ciò che vuoi giocare con tomcat e apache. Distribuire le due applicazioni separate in tomcat '/ app1' e '/ app2'. In apache mappa tutte le richieste a '/ **' => '/ app1/**' ad eccezione di quelle con extra '/ extra/**' => '/ app2/**' –
Sì, lo so, grazie. Ma sono sicuro che ci dovrebbe essere un modo per usare solo un web.xml/metterli entrambi in un WAR –
Come stai caricando 'extra-spring-security.xml'? Non lo hai nominato nel tuo snippet web.xml, è un '' in 'extra-spring-web.xml'? –