国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

在ofbiz集群中使用redis共享session

2019-11-11 06:26:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最開(kāi)始的想法是使用session監(jiān)聽(tīng)器,在session創(chuàng)建時(shí),根據(jù)sessionid為鍵,map為值,加入redis中.,在session銷(xiāo)毀時(shí)刪除此sessionid.

包裝session,重寫(xiě)session中的方法來(lái)設(shè)置值和取得值.

包裝request,將包裝的session作為包裝request的session.

結(jié)果在實(shí)現(xiàn)時(shí),發(fā)現(xiàn)每次創(chuàng)建session時(shí)id都不同而且控制不了,這樣的話(huà)一臺(tái)服務(wù)器死掉,切換到另一臺(tái)服務(wù)器的時(shí)候

原來(lái)存在redis中的數(shù)據(jù)得不到.

后面又想覆蓋掉jsessionid,沒(méi)成功.只能創(chuàng)建了一個(gè)rsessionid來(lái)做,在過(guò)濾器中根據(jù)此鍵來(lái)存入redis,

由于關(guān)閉ofbiz時(shí),session銷(xiāo)毀沒(méi)有執(zhí)行,只能設(shè)置存活時(shí)間.

由于有多個(gè)組件要使用此功能那么在初始化連接時(shí)初始一次就行了.

不過(guò)目前為止還沒(méi)有上線(xiàn),不知道這樣有沒(méi)有問(wèn)題.

主要代碼:

public void init(FilterConfig arg0) throws ServletException {		if (redisClient == null) {			synchronized (RedisFilter.class) {				if (redisClient == null) {					redisClient = RedisClient.getRedisClient();				}			}		}	}	//當(dāng)關(guān)閉服務(wù)器時(shí)session銷(xiāo)毀沒(méi)有觸發(fā)session監(jiān)聽(tīng)器	PRivate void setRedisAttribute(String id) {		Jedis redis = null;		try {			redis = redisClient.getJedis();			Object redisValue = redis.get(UtilObject.getBytes(id));			if (redisValue == null) {				synchronized (RedisFilter.class) {					if (redisValue == null) {						redis.set(UtilObject.getBytes(id), UtilObject.getBytes(new HashMap<String, Object>()));						redis.expire(UtilObject.getBytes(id), 86400);					}				}			}		} catch (Exception e) {			e.printStackTrace();		} finally {			redisClient.returnJedis(redis);		}	}
HttpServletRequest request = (HttpServletRequest) arg0;		HttpServletResponse response = (HttpServletResponse) arg1;		Cookie[] cookies = request.getCookies();		String sessionId = "", cookiePath = "";		int maxAge = -1;		if (cookies != null) {			for (Cookie c : cookies) {				if (c.getName().equals("RSESSIONID")) {					sessionId = c.getValue();					cookiePath = c.getPath();					maxAge = c.getMaxAge();				}			}		}		HttpSession session = request.getSession();		sessionId = UtilValidate.isEmpty(sessionId) ? session.getId() : sessionId;		cookiePath = "/";		session.setAttribute("redisSessionId", sessionId);		Cookie c1 = new Cookie("RSESSIONID", sessionId);		c1.setPath(cookiePath);		response.addCookie(c1); 		arg2.doFilter(request, response);


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 富平县| 利辛县| 绵阳市| 台中县| 凌海市| 永靖县| 漯河市| 江油市| 紫云| 栾城县| 龙游县| 开阳县| 磐安县| 庄河市| 巴彦淖尔市| 杨浦区| 安多县| 吉水县| 彭泽县| 航空| 阿拉善右旗| 新巴尔虎左旗| 玉林市| 响水县| 龙胜| 溧阳市| 凤庆县| 辽中县| 海兴县| 闵行区| 南皮县| 湟中县| 襄汾县| 宣化县| 灵台县| 峨眉山市| 原阳县| 玉溪市| 昌江| 镇坪县| 澄城县|