我在WebShpere应用程序上部署了HTTP会话管理作为点对点模型。我正在尝试使用cache-peer. xml文件重置Defalut会话超时。然而,它显示了下面的错误消息。
java.lang.RuntimeException: EntryIdleTimeout is not the same
at com.gemstone.gemfire.internal.cache.xmlcache.RegionAttributesCreation.sameAs(RegionAttributesCreation.java:391) ~[gemfire-8.0.0.jar:na]
at com.gemstone.gemfire.modules.util.RegionHelper.validateRegion(RegionHelper.java:67) ~[gemfire-modules-8.0.jar:na]
at com.gemstone.gemfire.modules.session.common.PeerToPeerSessionCache.createOrRetrieveRegion(PeerToPeerSessionCache.java:130) ~[gemfire-modules-session-8.0.jar:na]
at com.gemstone.gemfire.modules.session.common.PeerToPeerSessionCache.initialize(PeerToPeerSessionCache.java:72) ~[gemfire-modules-session-8.0.jar:na]
at com.gemstone.gemfire.modules.session.filter.GemfireSessionManager.initializeSessionCache(GemfireSessionManager.java:415) ~[gemfire-modules-session-8.0.jar:na]
at com.gemstone.gemfire.modules.session.filter.GemfireSessionManager.start(GemfireSessionManager.java:132) ~[gemfire-modules-session-8.0.jar:na]
at com.gemstone.gemfire.modules.session.filter.SessionCachingFilter.init(SessionCachingFilter.java:536) ~[gemfire-modules-session-external-8.0.jar:na]
缓存对等体. xml
<region name="gemfire_modules_sessions">
<region-attributes scope="distributed-ack" enable-gateway="false" data policy="replicate" statistics-enabled="true">
<entry-idle-time>
<expiration-attributes timeout="600" action="invalidate"/>
</entry-idle-time>
</region-attributes>
</region>
知道吗?我找不到Defalut设置。
您不应该使用区域定义来控制过期,而应该使用标准部署描述符语义学。例如在web. xml
中:
<session-config>
<!-- set session TTL to 30 seconds -->
<session-timeout>30</session-timeout>
</session-config>
会话过期仍然由本地容器控制,当会话创建/销毁时,本地容器将发出适当的事件。GemFireHTTP会话模块注册一个SessionListener
并获取这些事件,根据需要销毁底层缓存的会话。
您还可以通过ServletAPI设置单个会话的TTL:
HttpSession session = request.getSession();
session.setMaxInactiveInterval(30);