Come si usa Hazelcast come archivio di sessioni http con Tomcat incorporato con Spring Boot e Spring Security? Vedo che c'è un EmbeddedServletContainerCustomizer e SpringAwareWebFilter ma non capisco come usarlo.Avvio a molla con Hazelcast e Tomcat
risposta
Come described in Hazelcast's documentation, è necessario configurare Hazelcast SpringAwareWebFilter
e SessionListener
. È possibile farlo in primavera Boot dichiarando un FilterRegistrationBean
e un ServletListenerRegistrationBean
rispettivamente:
@Bean
public FilterRegistrationBean hazelcastFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean(new SpringAwareWebFilter());
registration.addUrlPatterns("/*");
registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE);
// Configure init parameters as appropriate:
// registration.addInitParameter("foo", "bar");
return registration;
}
@Bean
public ServletListenerRegistrationBean<SessionListener> hazelcastSessionListener() {
return new ServletListenerRegistrationBean<SessionListener>(new SessionListener());
}
SpringAwareWebFilter
e SessionListener
sono entrambi nel modulo di Hazelcast hazelcast-wm
quindi è necessario aggiungere una dipendenza com.hazelcast:hazelcast-wm
al pom.xml
o build.gradle
. hazelcast-wm
richiede inoltre che Spring Security si trovi sul classpath.
Ora, quando si esegue l'applicazione, si dovrebbe vedere il log in uscita da Hazelcast durante l'avvio che è simile al seguente:
2014-12-17 10:29:32.401 INFO 94332 --- [ost-startStop-1] com.hazelcast.config.XmlConfigLocator : Loading 'hazelcast-default.xml' from classpath.
2014-12-17 10:29:32.435 INFO 94332 --- [ost-startStop-1] c.hazelcast.web.HazelcastInstanceLoader : Creating a new HazelcastInstance for session replication
2014-12-17 10:29:32.582 INFO 94332 --- [ost-startStop-1] c.h.instance.DefaultAddressPicker : [LOCAL] [dev] [3.3.3] Prefer IPv4 stack is true.
2014-12-17 10:29:32.590 INFO 94332 --- [ost-startStop-1] c.h.instance.DefaultAddressPicker : [LOCAL] [dev] [3.3.3] Picked Address[169.254.144.237]:5701, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5701], bind any local is true
2014-12-17 10:29:32.612 INFO 94332 --- [ost-startStop-1] c.h.spi.impl.BasicOperationScheduler : [169.254.144.237]:5701 [dev] [3.3.3] Starting with 16 generic operation threads and 16 partition operation threads.
2014-12-17 10:29:32.657 INFO 94332 --- [ost-startStop-1] com.hazelcast.system : [169.254.144.237]:5701 [dev] [3.3.3] Hazelcast 3.3.3 (20141112 - eadb69c) starting at Address[169.254.144.237]:5701
2014-12-17 10:29:32.657 INFO 94332 --- [ost-startStop-1] com.hazelcast.system : [169.254.144.237]:5701 [dev] [3.3.3] Copyright (C) 2008-2014 Hazelcast.com
2014-12-17 10:29:32.661 INFO 94332 --- [ost-startStop-1] com.hazelcast.instance.Node : [169.254.144.237]:5701 [dev] [3.3.3] Creating MulticastJoiner
2014-12-17 10:29:32.664 INFO 94332 --- [ost-startStop-1] com.hazelcast.core.LifecycleService : [169.254.144.237]:5701 [dev] [3.3.3] Address[169.254.144.237]:5701 is STARTING
2014-12-17 10:29:38.482 INFO 94332 --- [ost-startStop-1] com.hazelcast.cluster.MulticastJoiner : [169.254.144.237]:5701 [dev] [3.3.3]
Members [1] {
Member [169.254.144.237]:5701 this
}
2014-12-17 10:29:38.503 INFO 94332 --- [ost-startStop-1] com.hazelcast.core.LifecycleService : [169.254.144.237]:5701 [dev] [3.3.3] Address[169.254.144.237]:5701 is STARTED
Perché non usi Primavera-sessione? È abbastanza facile
Invece di utilizzare HttpSession di Tomcat, stiamo effettivamente persistendo i valori in Redis. Spring Session sostituisce HttpSession con un'implementazione supportata da Redis. Quando SecurityContextPersistenceFilter di Spring Security salva SecurityContext su HttpSession, viene quindi mantenuto in Redis.
@EnableRedisHttpSession
public class HttpSessionConfig {
}
#src/main/resources/application.properties
spring.redis.host=localhost
spring.redis.password=secret
spring.redis.port=6379
http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html
- 1. Cluster Tomcat 7 incorporato con avvio a molla
- 2. Configurazione molla Hazelcast
- 3. Avvio a molla con AngularJS html5Mode
- 4. Avvio a molla con origine dati JNDI
- 5. Debug di jsp con avvio a molla e IntelliJ
- 6. Log di accesso tomcat di avvio a molla
- 7. Integrazione liquibase con avvio a molla
- 8. IntelliJ + Tomcat + caricato a molla
- 9. Eccezioni in rabbitmq con avvio a molla
- 10. Implementazione SSL a 2 vie con avvio a molla
- 11. Avvio a molla + Websocket (SockJS)
- 12. Logout JWT avvio a molla
- 13. disabilitazione della sicurezza a molla nell'app di avvio a molla
- 14. Avvio a molla, esclusione di sicurezza a molla UserDetailsService
- 15. come configurare la dimensione dell'heap quando si avvia un'applicazione di avvio a molla con tomcat incorporato?
- 16. Utilizzare l'attuatore di avvio a molla senza un'applicazione di avvio a molla
- 17. Ordine di configurazione automatica avvio a molla
- 18. Avvio a molla - Caricamento dati iniziali
- 19. Avvio a molla + credenziali client Oauth2
- 20. Configurazione registrazione programmatica di avvio a molla
- 21. Avvio a molla - Ambiente @Autowired genera NullPointerException
- 22. Avvio a molla @ConfigurationProperties non caricato
- 23. Avvio a molla, Maven, AngularJS 2, dattiloscritto e live ricarica
- 24. Indice indice di avvio a molla
- 25. avvio a molla di debug in vagabondo e finestra mobile
- 26. Avvio a molla - Non un tipo gestito
- 27. Avvio a molla e controller nei moduli importati
- 28. Livello registro applicazione di avvio a molla
- 29. avvio a molla Joda DateTime Serialization
- 30. Come distribuire un'applicazione MVC di avvio a molla nella cartella Webapps di tomcat tradizionale?