0
私はSSOを有効にするためにehcache.xmlと一緒に認証にshiroを使用しています。shiroとehcacheに関する問題
私は
public class SharedEhCacheManagerFactory implements Factory<CacheManager> {
private String cacheManagerConfigFile = "/ehcache.xml";
@Override
public CacheManager getInstance()
{
return CacheManager.create(readCacheManagerConfigFileAsInputStream());
}
public InputStream readCacheManagerConfigFileAsInputStream()
{
InputStream is = getClass().getResourceAsStream(cacheManagerConfigFile);
return is;
}
}
以下のようなファクトリクラスを持っており、すべてのWebアプリケーションのための私のshiro.iniファイルのメインセクションが
[main]
ehCacheManager = com.nokia.anv.app.security.service.SharedEhCacheManagerFactory
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
cacheManager.cacheManager=$ehCacheManager
securityManager.cacheManager = $cacheManager
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
sessionManager.sessionDAO = $sessionDAO
cookie = org.apache.shiro.web.servlet.SimpleCookie
cookie.name = SSOCookie
cookie.path =/
sessionManager.sessionIdCookie = $cookie
sessionManager.sessionIdUrlRewritingEnabled = false
securityManager.sessionManager = $sessionManager
のようなものです
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"
monitoring="autodetect" dynamicConfig="true" name="my-cache">
<diskStore path="java.io.tmpdir/mycache" />
<cache name="shiro-activeSessionCache" maxElementsInMemory="1000"
eternal="true" overflowToDisk="true" memoryStoreEvictionPolicy="LFU">
</cache>
<defaultCache maxElementsInMemory="100" eternal="true"
overflowToDisk="true" memoryStoreEvictionPolicy="LFU">
</defaultCache>
</ehcache>
のように私のehcache.xmlに見えます
私はapache karafを使用しています。このアプリケーションはドッカーコンテナに入っています。私が最初にコンテナを起動するとすべてが大丈夫ですが、私はコンテナを停止して開始した場合、私は
javax.servlet.ServletException: java.lang.IllegalStateException: The CacheManager has been shut down. It can no longer be used.
at org.apache.shiro.web.servlet.AdviceFilter.cleanup(AdviceFilter.java:196)
at org.apache.shiro.web.filter.authc.AuthenticatingFilter.cleanup(AuthenticatingFilter.java:155)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:148)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
ようappllicationsのほとんどのエラーを取得していますが、常に2つのアプリケーションが細かいです。問題が何であるか教えてください。