国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

spring-session實現分布式集群session的共享

AdolphLWQ / 1127人閱讀

摘要:實現分布式集群的共享共享本文使用實現共享,基于實現想使用基于容器的共享請搜索其他文章本文不講解基礎環境搭建,需要使用等相關知識點,不做介紹未做共享整體項目結構基礎代碼未做共

title: spring-session實現分布式集群session的共享
tags: springboot,spring,session共享

grammar_cjkRuby: true

**本文使用springboot實現session共享,基于spring session實現
想使用基于容器的session共享請搜索其他文章

本文不講解基礎環境搭建,需要使用idea、maven、springboot等相關知識點,不做介紹

未做session共享 整體項目結構

基礎代碼: pom.xml


    4.0.0

    com.xiang.springboot.demo
    springboot-demo
    0.0.1-SNAPSHOT
    jar
    springboot-demo
    Demo project for Spring Boot
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.2.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

SpringbootDemoApplication.java
package com.xiang.springboot.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.context.ServletContextAware;

import javax.servlet.ServletContext;

@SpringBootApplication
public class SpringbootDemoApplication implements ServletContextAware {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }

    @Override
    public void setServletContext(ServletContext context) {
        String ctx = context.getContextPath();
        System.out.println("ctx=" + ctx);
        context.setAttribute("ctx", ctx);
    }
}
TestController.java
package com.xiang.springboot.demo.module1.controller;


import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/module1")
public class TestController {
    @GetMapping("/page1")
    public String page1(HttpServletRequest request, HttpServletResponse response, RedirectAttributes attr, ModelMap map) {
        System.out.println(attr.getFlashAttributes().get("test"));
        System.out.println("aaaaaaaaaaaaaa" + map.get("test"));
        HttpSession session = request.getSession();
        session.setAttribute("sessiontest","session test text...."+session.getId());
        String url = request.getScheme()+":111//"+request.getServerName()+":"+request.getServerPort()+"-"+request.getLocalPort()+"/"+request.getContextPath()+"/"+request.getRequestURI();
        session.setAttribute("ctpath",url);
        return "module1/page1";
    }

    @GetMapping("/page2")
    public String page2(HttpServletRequest request, HttpServletResponse response, RedirectAttributes attr) {
        attr.addFlashAttribute("test", "testaaaaa");
        return "redirect:/module1/page1";
    }

}
page1.html


    
    Spring MVC + Thymeleaf Example



 Hello,

ContextPath, !
Hello, !
session, !
未做session共享之前的結果

session共享 項目結構
整體項目結構與原來保持一致
pom.xml
原pom.xml中加入
        
            org.springframework.boot
            spring-boot-starter-redis
            1.3.8.RELEASE
            
        
        
            org.springframework.session
            spring-session-data-redis
        
application.yml

將原來的application.properties改名了

加入:

spring:
  redis:
    database: 0
    host: ***
    port: 6379
    password: ***
    timeout: 0
    pool:
      max-active: 8
      max-wait: -1
      max-idle: 8
      min-idle: 0
    session:
      store-type: none

加入新文件RedisHttpSessionConfig.java

package com.xiang.springboot.demo.module1.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@Configuration
//maxInactiveIntervalInSeconds 默認是1800秒過期,這里測試修改為60秒
@EnableRedisHttpSession(maxInactiveIntervalInSeconds=60)
public class RedisHttpSessionConfig{

}

其他不用變

最終結果

代碼地址:
https://gitee.com/soft_xiang/...

---------------2018.06.20 更新-----------------------------------------------

使用spring session之后原httpsessionListener的創建和銷毀session的監聽器會失效
處理方法:https://docs.spring.io/spring...

代碼如下:

@Configuration
//maxInactiveIntervalInSeconds 默認是1800秒過期,這里測試修改為60秒
@EnableRedisHttpSession(maxInactiveIntervalInSeconds=180)
public class RedisHttpSessionConfig{

    @Bean
    public SessionEventHttpSessionListenerAdapter getSessionEventHttpSessionListenerAdapter(){
        List listeners = new ArrayList<>();
        listeners.add(getHttpSessionListener());
        return new SessionEventHttpSessionListenerAdapter(listeners);
    }

    @Bean
    public HttpSessionListener getHttpSessionListener(){
        return new MyHttpSessionListener();
    }
}

---------------2018.06.20 更新end-----------------------------------------------

參考:

不是springboot實現方式,但講的較好,推薦
https://www.cnblogs.com/youzh...

springboot方式,有一些踩坑記錄
https://blog.csdn.net/dream_b...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72056.html

相關文章

  • 解決spring-session在redis集群下監聽expired事件失敗

    摘要:問題正如上描述,事件有時監聽會丟失,不支持集群這種場景。只有訂閱和創建連接同時連接到一臺節點才能監聽到這個產生的事件。解決方案自己對所有集群主備節點進行事件訂閱。 問題:正如github上issue描述,expired事件有時監聽會丟失,spring-session不支持redis集群這種場景。https://github.com/spring-pro... 原因:spring-ses...

    xeblog 評論0 收藏0
  • Java 類文章 - 收藏集 - 掘金

    摘要:而調用后端服務就應用了的高級特分布式配置管理平臺后端掘金輕量的分布式配置管理平臺。關于網絡深度解讀后端掘金什么是網絡呢總的來說,網絡中的容器們可以相互通信,網絡外的又訪問不了這些容器。 在 Java 路上,我看過的一些書、源碼和框架(持續更新) - 后端 - 掘金簡書 占小狼轉載請注明原創出處,謝謝!如果讀完覺得有收獲的話,歡迎點贊加關注 物有本末,事有終始,知所先后,則近道矣 ......

    RayKr 評論0 收藏0
  • 如果連鐵將軍都不再可靠--記一次排查使用布式輪候鎖+SESSION防訂單重復仍然加鎖失效問題經歷

    摘要:盡可能地將數據寫入,例如創建設置的都會將數據立即的寫入再來看看文檔怎么描述的看看這可愛的默認值我們終于知道了當我們不做任何設置時,默認采用的是方式顯而易見,使用方式能最大限度的減少與的交互,而在大多數場景下都是沒有問題的。 0.問題背景 此次問題源于一次挺嚴重的生產事故:客戶的訂單被重復生成了,而出問題的代碼其實很簡單: // .... redisLockUtil.lock(membe...

    econi 評論0 收藏0

發表評論

0條評論

AdolphLWQ

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<