Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
街头小贩
jforum
提交
f7b4faf7
J
jforum
项目概览
街头小贩
/
jforum
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jforum
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f7b4faf7
编写于
10月 02, 2020
作者:
街头小贩
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复OnlineMemberEhcacheStorage的init方法执行两次,导致cache创建的CacheException
上级
bc780022
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
35 deletion
+19
-35
trident/src/main/java/com/apobates/forum/member/storage/ehcache/OnlineMemberEhcacheStorage.java
...um/member/storage/ehcache/OnlineMemberEhcacheStorage.java
+6
-19
trident/src/main/java/com/apobates/forum/trident/TridentAppConfig.java
...ain/java/com/apobates/forum/trident/TridentAppConfig.java
+6
-8
trident/src/main/java/com/apobates/forum/trident/TridentFrontConfig.java
...n/java/com/apobates/forum/trident/TridentFrontConfig.java
+7
-8
未找到文件。
trident/src/main/java/com/apobates/forum/member/storage/ehcache/OnlineMemberEhcacheStorage.java
浏览文件 @
f7b4faf7
...
...
@@ -13,10 +13,7 @@ import com.apobates.forum.utils.CookieUtils;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.cache.jcache.JCacheCacheManager
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.PreDestroy
;
import
javax.cache.Cache
;
import
javax.cache.CacheManager
;
import
javax.cache.configuration.MutableConfiguration
;
...
...
@@ -42,14 +39,14 @@ public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
private
final
static
String
EHC_STORE
=
"olMemberSession"
;
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
OnlineMemberEhcacheStorage
.
class
);
@PostConstruct
//使用PostConstruct会执行两次
//使用spring的init-method只会执行一次
public
void
init
(){
logger
.
info
(
"OnlineMemberEhcacheStorage postconstruct init"
);
MutableConfiguration
<
String
,
MemberSessionBean
>
configuration
=
new
MutableConfiguration
<
String
,
MemberSessionBean
>()
.
setTypes
(
String
.
class
,
MemberSessionBean
.
class
)
.
setStoreByValue
(
true
)
.
setExpiryPolicyFactory
(
CreatedExpiryPolicy
.
factoryOf
(
Duration
.
ONE_DAY
));
MutableConfiguration
<
String
,
MemberSessionBean
>
configuration
=
new
MutableConfiguration
<
String
,
MemberSessionBean
>()
.
setTypes
(
String
.
class
,
MemberSessionBean
.
class
)
.
setStoreByValue
(
true
)
.
setExpiryPolicyFactory
(
CreatedExpiryPolicy
.
factoryOf
(
Duration
.
ONE_DAY
));
try
{
cacheManager
.
getCacheManager
().
createCache
(
EHC_STORE
,
configuration
);
}
catch
(
Exception
e
){
...
...
@@ -57,16 +54,6 @@ public class OnlineMemberEhcacheStorage implements OnlineMemberStorage {
}
}
@PreDestroy
public
void
close
(){
logger
.
info
(
"OnlineMemberEhcacheStorage postconstruct close"
);
try
{
cacheManager
.
getCacheManager
().
destroyCache
(
EHC_STORE
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
@Override
public
void
store
(
MemberSessionBean
memberSessionBean
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
passStub
=
rndStub
();
...
...
trident/src/main/java/com/apobates/forum/trident/TridentAppConfig.java
浏览文件 @
f7b4faf7
...
...
@@ -4,9 +4,9 @@ import java.io.IOException;
import
javax.persistence.EntityManagerFactory
;
import
javax.servlet.Filter
;
import
javax.sql.DataSource
;
import
com.apobates.forum.utils.Commons
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.cache.jcache.JCacheCacheManager
;
import
org.springframework.cache.jcache.JCacheManagerFactoryBean
;
import
org.springframework.context.annotation.*
;
...
...
@@ -59,7 +59,6 @@ public class TridentAppConfig{
// 数据源
@Bean
(
value
=
"dataSource"
,
initMethod
=
"init"
,
destroyMethod
=
"close"
)
// 假如没有指定名字,默认为方法名
public
DataSource
buildDataSource
(
JdbcProperties
jdbcProperties
)
{
//
DruidDataSource
ds
=
new
DruidDataSource
();
ds
.
setDriverClassName
(
jdbcProperties
.
getDriverClassName
());
ds
.
setUrl
(
jdbcProperties
.
getUrl
());
...
...
@@ -89,7 +88,6 @@ public class TridentAppConfig{
}
@Bean
public
LocalContainerEntityManagerFactoryBean
entityManagerFactory
(
JdbcProperties
jdbcProperties
,
DataSource
dataSource
,
JpaVendorAdapter
jpaVendorAdapter
){
//
LocalContainerEntityManagerFactoryBean
aemf
=
new
org
.
springframework
.
orm
.
jpa
.
LocalContainerEntityManagerFactoryBean
();
aemf
.
setPersistenceUnitName
(
jdbcProperties
.
getJpaUnitName
());
aemf
.
setDataSource
(
dataSource
);
...
...
@@ -105,16 +103,16 @@ public class TridentAppConfig{
return
jtm
;
}
//缓存|Ehcache 3.x is fully JSR-107 compliant and no dedicated support is required for it
@Bean
public
JCacheManagerFactoryBean
getCache
()
throws
IOException
{
@Bean
(
"cacheManagerFactory"
)
public
JCacheManagerFactoryBean
cacheManagerFactory
()
throws
IOException
{
JCacheManagerFactoryBean
jCacheManagerFactoryBean
=
new
org
.
springframework
.
cache
.
jcache
.
JCacheManagerFactoryBean
();
jCacheManagerFactoryBean
.
setCacheManagerUri
(
new
ClassPathResource
(
"ehcache.xml"
).
getURI
());
return
jCacheManagerFactoryBean
;
}
@Bean
(
"cache
Cache
Manager"
)
public
JCacheCacheManager
ehCacheCacheManager
(
JCacheManagerFactoryBean
jCache
)
throws
IOException
{
@Bean
(
"cacheManager"
)
public
JCacheCacheManager
cacheManager
(
@Qualifier
(
"cacheManagerFactory"
)
JCacheManagerFactoryBean
cacheManagerFactory
)
throws
IOException
{
JCacheCacheManager
jCacheCacheManager
=
new
org
.
springframework
.
cache
.
jcache
.
JCacheCacheManager
();
jCacheCacheManager
.
setCacheManager
(
jCache
.
getObject
());
jCacheCacheManager
.
setCacheManager
(
cacheManagerFactory
.
getObject
());
jCacheCacheManager
.
setTransactionAware
(
true
);
return
jCacheCacheManager
;
}
...
...
trident/src/main/java/com/apobates/forum/trident/TridentFrontConfig.java
浏览文件 @
f7b4faf7
package
com.apobates.forum.trident
;
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
;
...
...
@@ -247,17 +245,18 @@ public class TridentFrontConfig implements WebMvcConfigurer{
}
@Bean
(
name
=
"onlineMemberStorage"
)
public
OnlineMemberStorage
getMemberStorage
(
CookieMetaConfig
cookieConfig
,
@Nullable
OnlineMemberEhcacheStorage
ehcache
StorageProvider
){
if
(
null
==
ehcache
StorageProvider
)
{
public
OnlineMemberStorage
getMemberStorage
(
CookieMetaConfig
cookieConfig
,
@Nullable
OnlineMemberEhcacheStorage
ehcache
MemberStorage
){
if
(
null
==
ehcache
MemberStorage
)
{
return
new
com
.
apobates
.
forum
.
member
.
storage
.
cookie
.
HttpCookieProvider
(
cookieConfig
);
}
return
ehcache
StorageProvider
;
return
ehcache
MemberStorage
;
}
@Bean
(
"ehcacheStorageProvider"
)
@Bean
(
value
=
"ehcacheMemberStorage"
,
initMethod
=
"init"
)
@Conditional
(
EhcacheMemberStorageCondition
.
class
)
public
OnlineMemberEhcacheStorage
getMemberEhacheStorage
(
CookieMetaConfig
cookieConfig
,
JCacheCacheManager
cacheCacheManager
){
public
OnlineMemberEhcacheStorage
getMemberEhacheStorage
(){
//ehcache
return
new
com
.
apobates
.
forum
.
member
.
storage
.
ehcache
.
OnlineMemberEhcacheStorage
(
cookieConfig
,
cacheCacheManager
);
return
new
com
.
apobates
.
forum
.
member
.
storage
.
ehcache
.
OnlineMemberEhcacheStorage
();
}
//图片存储
@Bean
(
name
=
"imageIOConfig"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录