2014-11-25 18 views
13

In Tomcat v'è un noto opzione di configurazione in conf/context.xml di disabilitare persistenza di sessione:Come disabilitare la persistenza della sessione Tomcat in Spring Boot tramite il nome percorso di Manager?

<!-- Uncomment this to disable session persistence across Tomcat restarts --> 
<Manager pathname="" /> 

Quando uncommented come mostrato qui, l'esecuzione applicata di org.apache.catalina.Manager (es org.apache.catalina.session.StandardManager) non ha un pathname per indicare dove si memorizza le sessioni sul disco e quindi non scrive i file di sessione sul disco (ad es. sullo spegnimento), che è ciò che vogliamo.

In altre parole, questo disabilita la funzionalità standard di Tomcat per sostenere le sessioni attraverso il riavvio del server.

Come si può ottenere lo stesso in Spring Boot con Tomcat incorporato?

Forse l'oggetto Manager può essere ottenuto in qualche modo per impostare il nome percorso della proprietà su null?

risposta

13

è possibile utilizzare un TomcatContextCustomizer per accedere al manager e applicare la configurazione necessaria:

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(); 
    tomcat.addContextCustomizers(new TomcatContextCustomizer() { 

     @Override 
     public void customize(Context context) { 
      if (context.getManager() instanceof StandardManager) { 
       ((StandardManager) context.getManager()).setPathname(""); 
      } 
     } 
    }); 
    return tomcat; 
} 
Problemi correlati