2015-03-19 4 views
0

Я использую весенне-сессии LIBS упорствовать сессию Hazelcast как:Как истекает Hazelcast сеанс

1.

@WebListener 
public class HazelcastInitializer implements ServletContextListener { 

private HazelcastInstance instance; 

@Override 
public void contextInitialized(ServletContextEvent sce) { 
    String sessionMapName = "spring:session:sessions"; 
    ServletContext sc = sce.getServletContext(); 

    ClientConfig clientConfig = new ClientConfig(); 
    clientConfig.getGroupConfig().setName("nameValue").setPassword("passValue"); 
    clientConfig.getNetworkConfig().addAddress("ipValue"); 
    clientConfig.getNetworkConfig().setSmartRouting(true); 

    Collection<SerializerConfig> scfg = new ArrayList<SerializerConfig>(); 
    SerializerConfig serializer = new SerializerConfig() 
      .setTypeClass(Object.class) 
      .setImplementation(new ObjectStreamSerializer()); 
    scfg.add(serializer); 
    clientConfig.getSerializationConfig().setSerializerConfigs(scfg); 

    instance = HazelcastClient.newHazelcastClient(clientConfig); 

    Map<String, ExpiringSession> sessions = instance.getMap(sessionMapName); 

    SessionRepository<ExpiringSession> sessionRepository 
      = new MapSessionRepository(sessions); 
    SessionRepositoryFilter<ExpiringSession> filter 
      = new SessionRepositoryFilter<ExpiringSession>(sessionRepository); 
    Dynamic fr = sc.addFilter("springSessionFilter", filter); 
    fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); 
} 

@Override 
public void contextDestroyed(ServletContextEvent sce) { 
    if (instance != null) { 
     instance.shutdown(); 
    } 
} 
} 

Как я могу истекать сессию на Hazelcast (на Hazelcast Management количество записей сессий все время увеличивается) ?

ответ

1

Вы можете добавить ttl для отображения конфигурации. Таким образом, неактивные сеансы высылаются после некоторого таймаута. Вы можете увидеть пример: https://github.com/spring-projects/spring-session/blob/1.0.0.RELEASE/samples/hazelcast/src/main/java/sample/Initializer.java#L59

Также я предполагаю, что это пример приложения - это то, что вы хотите.

+0

1) В приведенном выше примере я использовал объект «ClientConfig»; 2) Ссылка, которую вы предоставили для своего шоу с помощью объекта «Конфигурация». 3) Как я могу установить значение «MapSession.DEFAULT_MAX_INACTIVE_INTERVAL_SECONDS», используя объект «ClientConfig», чтобы истечь ключ сеанса карты? –

+0

hmm, вы не можете установить ttl на стороне клиента, вы должны сделать это на своей стороне сервера, вы можете поместить файл конфигурации hazelcast.xml в свой путь к классам. и hazelcast.xml может иметь конфигурацию карты. –

+0

Я установил следующие строки: 1 true <время-жить-секунды> 1800 И работал! Много tks: D –