2

マップのヘーゼルキャスト構成は

    <map name="test">
      <max-idle-seconds>120</max-idle-seconds>
    <entry-listeners>
        <entry-listener include-value="true" local="false">com.test.listener.SessionListener</entry-listener>
    </entry-listeners>
   </map>

エビクトアクション用に構成されたリスナーがあります。リスナーはエビクト アクションを一貫してキャッチできません。ヘーゼルキャスト バージョン: 3.6.5

リスナー クラスの実装:

public class SessionListener implements EntryListener<String, Object> {
@Override
public void entryEvicted(EntryEvent<String, Object> evictData) {

    try {
        Session sessionObjValue = (Session) evictData.getOldValue();
        String sessionId = sessionObjValue.getSessionId();
        String userName = sessionObjValue.getUsername();

        JSONObject inputJSON = new JSONObject();
        inputJSON.put(Constants.SESSIONID, sessionId);
        inputJSON.put(Constants.USER_NAME, userName);
        //Operations to be performed based on the JSON Value


    } catch (Exception exception) {
        LOGGER.logDebug(Constants.ERROR, methodName, exception.toString());
    }

}
4

1 に答える 1

0

推奨事項は次のとおりです。

  1. マップ構成にEviction ポリシー構成を含めます。現在、削除は max-idle-seconds に基づいてのみ行われています。
  2. 他のインターフェースを継承する EntryListener インターフェースからすべてのメソッドを実装します。
  3. リスナーも実装EntryExpiredListenerして、期限切れイベントを明示的にキャッチしますが、期限切れ時に evict イベントも呼び出されます。

サンプルコード:

    public class MapEntryListernerTest implements EntryListener, EntryExpiredListener {


    @Override
    public void entryAdded(EntryEvent event) {

    }

    @Override
    public void entryEvicted(EntryEvent event) {

    }

    @Override
    public void entryRemoved(EntryEvent event) {

    }

    @Override
    public void entryUpdated(EntryEvent event) {

    }

    @Override
    public void mapCleared(MapEvent event) {

    }

    @Override
    public void mapEvicted(MapEvent event) {

    }

    @Override
    public void entryExpired(EntryEvent event) {

    }
    }
于 2016-10-17T13:39:25.877 に答える