Wie verwenden Sie Hazelcast als HTTP-Sitzungsspeicher mit integriertem Tomcat mit Spring Boot und Spring Security? Ich sehe, es gibt einen EmbeddedServletContainerCustomizer und SpringAwareWebFilter, aber ich verstehe nicht, wie man es benutzt.Spring Boot mit Hazelcast und Tomcat
Antwort
Als described in Hazelcast's documentation müssen Sie Hazelcasts SpringAwareWebFilter
und SessionListener
konfigurieren. Sie können also im Frühling Stiefel tun, indem Sie ein FilterRegistrationBean
erklärt und ein ServletListenerRegistrationBean
jeweils:
@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
und SessionListener
sind beide in hazelcast-wm
Moduls Hazelcast so dass Sie eine Abhängigkeit von com.hazelcast:hazelcast-wm
zu Ihrem pom.xml
oder build.gradle
hinzufügen müssen. hazelcast-wm
erfordert außerdem Spring Security, um auf dem Klassenpfad zu sein.
Nun, wenn Sie Ihre Anwendung ausführen, sollten Sie eine Ausgabe von Hazelcast während des Startvorgangs sehen melden Sie sich an, die folgend ähnlich ist:
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
Warum nicht verwendet Frühlings-Session? Es ist ziemlich einfach.
Anstatt Tomcat's HttpSession zu verwenden, behalten wir tatsächlich die Werte in Redis bei. Spring Session ersetzt die HttpSession durch eine Implementierung, die von Redis unterstützt wird. Wenn der SecurityContextPersistenceFilter von Spring Security den SecurityContext in der HttpSession speichert, wird er in Redis gespeichert.
@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. Spring Boot Exclude Tomcat Abhängigkeit
- 2. Embedded Tomcat 7 Cluster mit Spring-Boot
- 3. Aktivieren der Sitzungspersistenz mit Spring Boot und eingebettetem Tomcat
- 4. Spring Boot-Projekt mit integriertem Tomcat und mehreren Umgebungen
- 5. Standard-Verbindungspool für Tomcat im Spring-Boot?
- 6. Setup Spring-Boot-App auf Tomcat
- 7. Spring Boot War ohne Tomcat eingebettet
- 8. Spring-Boot kann nicht starten eingebetteten Tomcat
- 9. Debugging jsp mit Spring-Boot und IntelliJ
- 10. Spring Boot Actuator ohne Spring Boot
- 11. Spring Boot-Anwendung mit Hazelcast Backed Spring Session Serialisierungsausnahme bei Active Directory-Anmeldefehler
- 12. Spring Boot - benutzerdefinierte 404-Seite mit Standalone-Tomcat
- 13. Ist Spring Boot mit eingebettetem Tomcat oder Jetty Produktionsqualität
- 14. Tomcat hinter Apache mit Ajp für Spring Boot-Anwendung
- 15. Routing mit AngularJS und Spring-Boot
- 16. Spring Boot Sitzung Timeout
- 17. Log4J2 im Frühjahr Boot mit eingebetteten Tomcat
- 18. Spring Boot und FreeMarker
- 19. Spring Boot Krieg log4j2
- 20. Guava EventBus + Hazelcast Spring config
- 21. Spring Boot: Hibernate und Flyway Boot-Reihenfolge
- 22. Spring Boot mit JNDI-Datenquelle
- 23. Sicherheitskonfiguration mit Spring-Boot
- 24. Spring Boot mit Liferay
- 25. Vorteil der Spring Boot
- 26. Frühlings-Boot Gradle Tomcat 8
- 27. Spring Boot Basic
- 28. Spring Boot Tomcat Einbetten CA SSO/Siteminder Intercept
- 29. Wo ist das Crash-Log des Spring Boot Embedded Tomcat?
- 30. Ist Spring Boot + Spring MVC + Ratpack möglich?