1

WebShpere アプリケーションに HTTP セッション管理を Peer to Peer モデルとしてデプロイしました。cache-peer.xml ファイルを使用して、デフォルトのセッション タイムアウトをリセットしようとしています。ただし、以下のエラーメッセージが表示されます。

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>

何か案が?デフォルト設定が見つかりませんでした。

4

1 に答える 1

1

リージョン定義を使用して有効期限を制御するのではなく、標準のデプロイメント記述子セマンティクスを使用する必要があります。たとえば、web.xml次のようになります。

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

セッションの有効期限は、セッションが作成/破棄されたときに適切なイベントを発行するネイティブ コンテナーによって引き続き制御されます。GemFire HTTP セッション モジュールはSessionListenerこれらのイベントを登録して取得し、必要に応じて基になるキャッシュされたセッションを破棄します。

また、サーブレット API を使用して個々のセッションに TTL を設定することもできます。

HttpSession session = request.getSession();
session.setMaxInactiveInterval(30);
于 2015-06-11T21:35:33.443 に答える