Gemfire HTTP会话管理器EntryIdleTimeout不是同一个错误

时间:2015-06-10 09:47:00

标签: gemfire geode

我在WebShpere应用程序上部署了HTTP会话管理作为Peer to Peer模型。我正在尝试使用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]

缓存peer.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设置。

1 个答案:

答案 0 :(得分:1)

您不应使用区域定义来控制过期,而应使用标准部署描述符语义。例如,在web.xml

<session-config>
    <!-- set session TTL to 30 seconds -->
    <session-timeout>30</session-timeout>
</session-config>

会话到期仍由本机容器控制,该容器将在创建/销毁会话时发出相应的事件。 GemFire HTTP会话模块注册SessionListener并获取这些事件,并在必要时销毁基础缓存会话。

您还可以通过Servlet API在单个会话中设置TTL:

HttpSession session = request.getSession();
session.setMaxInactiveInterval(30);