提交 54b3f797 编写于 作者: 街头小贩's avatar 街头小贩

改用TWR

上级 67ccf278
......@@ -29,13 +29,16 @@ import java.util.Optional;
* @since 20201001
*/
public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
@Autowired
private CookieMetaConfig metaConfig;
@Autowired
private JCacheCacheManager cacheCacheManager;
private final CookieMetaConfig metaConfig;
private final JCacheCacheManager cacheCacheManager;
private final static String EHC_STORE = "olMemberSession";
private final static Logger logger = LoggerFactory.getLogger(OnlineMemberEhcacheStorage.class);
public OnlineMemberEhcacheStorage(CookieMetaConfig metaConfig, JCacheCacheManager cacheCacheManager) {
this.metaConfig = metaConfig;
this.cacheCacheManager = cacheCacheManager;
}
@Override
public void store(MemberSessionBean memberSessionBean, HttpServletRequest request, HttpServletResponse response) {
String passStub = rndStub();
......@@ -45,17 +48,12 @@ public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
Map<String,String> val = MemberSessionBeanConverter.toMap(memberSessionBean, expireDate);
if (afterPart.isPresent() && null != val && !val.isEmpty()) {
String ecKey = metaConfig.getName() + ":" + afterPart.get();
CacheManager cacheManager = cacheCacheManager.getCacheManager();
try {
Cache<String, MemberSessionBean> cache = cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class);
try(CacheManager cacheManager = cacheCacheManager.getCacheManager(); Cache<String, MemberSessionBean> cache = cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class)){
cache.put(ecKey, memberSessionBean);
cache.close();
}catch(Exception e){
if(logger.isDebugEnabled()){
logger.debug("[OM][EHC][save]"+e.getMessage(), e);
}
}finally {
cacheManager.close();
}
serializeCookie(passStub, expireDate, request, response, metaConfig.getName(), metaConfig.getPath(), metaConfig.getDomain(), metaConfig.isHttps());
}
......@@ -66,15 +64,12 @@ public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
Optional<String> afterPart = getEhcacheKey(request); //前缀:hashValue
if (afterPart.isPresent()) {
String ecKey = metaConfig.getName() + ":" + afterPart.get();
CacheManager cacheManager = cacheCacheManager.getCacheManager();
try {
cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class).remove(ecKey);
try(CacheManager cacheManager = cacheCacheManager.getCacheManager(); Cache<String, MemberSessionBean> cache = cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class)){
cache.remove(ecKey);
}catch(Exception e){
if(logger.isDebugEnabled()){
logger.debug("[OM][EHC][del]"+e.getMessage(), e);
}
}finally {
cacheManager.close();
}
expireCookie(request, response, metaConfig.getName(), metaConfig.getPath(), metaConfig.getDomain());
}
......@@ -96,9 +91,7 @@ public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
return Optional.empty();
}
String ecKey = metaConfig.getName() + ":" + afterPart.get();
CacheManager cacheManager = cacheCacheManager.getCacheManager();
try {
Cache<String, MemberSessionBean> cache = cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class);
try(CacheManager cacheManager = cacheCacheManager.getCacheManager(); Cache<String, MemberSessionBean> cache = cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class)){
MemberSessionBean msb = cache.get(ecKey);
cache.close();
return Optional.ofNullable(msb);
......@@ -106,8 +99,6 @@ public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
if(logger.isDebugEnabled()){
logger.debug("[OM][EHC][get]"+e.getMessage(), e);
}
}finally {
cacheManager.close();
}
return Optional.empty();
}
......@@ -119,18 +110,13 @@ public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
return;
}
String ecKey = metaConfig.getName() + ":" + afterPart.get();
CacheManager cacheManager = cacheCacheManager.getCacheManager();
try {
Cache<String, MemberSessionBean> cache = cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class);
try(CacheManager cacheManager = cacheCacheManager.getCacheManager(); Cache<String, MemberSessionBean> cache = cacheManager.getCache(EHC_STORE, String.class, MemberSessionBean.class)){
MemberSessionBean msb = cache.get(ecKey);
cache.put(ecKey, msb.refact(group, role, status));
cache.close();
}catch(Exception e){
if(logger.isDebugEnabled()){
logger.debug("[OM][EHC][refresh]"+e.getMessage(), e);
}
}finally {
cacheManager.close();
}
}
......
......@@ -111,7 +111,7 @@ public class TridentAppConfig{
jCacheManagerFactoryBean.setCacheManagerUri(new ClassPathResource("ehcache.xml").getURI());
return jCacheManagerFactoryBean;
}
@Bean
@Bean("cacheCacheManager")
public JCacheCacheManager ehCacheCacheManager(JCacheManagerFactoryBean jCache) throws IOException {
JCacheCacheManager jCacheCacheManager = new org.springframework.cache.jcache.JCacheCacheManager();
jCacheCacheManager.setCacheManager(jCache.getObject());
......
......@@ -5,6 +5,7 @@ import java.util.List;
import com.apobates.forum.member.storage.ehcache.EhcacheMemberStorageCondition;
import com.apobates.forum.member.storage.ehcache.OnlineMemberEhcacheStorage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.jcache.JCacheCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
......@@ -254,9 +255,9 @@ public class TridentFrontConfig implements WebMvcConfigurer{
}
@Bean("ehcacheStorageProvider")
@Conditional(EhcacheMemberStorageCondition.class)
public OnlineMemberEhcacheStorage getMemberEhacheStorage(){
public OnlineMemberEhcacheStorage getMemberEhacheStorage(CookieMetaConfig cookieConfig, JCacheCacheManager cacheCacheManager){
//ehcache
return new com.apobates.forum.member.storage.ehcache.OnlineMemberEhcacheStorage();
return new com.apobates.forum.member.storage.ehcache.OnlineMemberEhcacheStorage(cookieConfig, cacheCacheManager);
}
//图片存储
@Bean(name="imageIOConfig")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册