【问题标题】:Cronjob for delete StoredHttpSession items Hybris用于删除 StoredHttpSession 项目的 Cronjob Hybris
【发布时间】:2021-03-27 01:48:34
【问题描述】:

我需要一些关于我将在这里说的建议的帮助。我需要为 sap hybris 平台创建一个 cronjob,它会删除早于 X 秒的 StoredHttpSession 项目。我真的需要一些建议,因为我真的不知道如何开始。非常感谢!

本段来自 SAP 文档。 (Tomcat 提供的常规 HttpSessions 被主动监控失效(StandardManager.processExpires)。一旦会话成为失效候选,会话被销毁,并触发 sessionDestroyed 事件。OOTB Spring 会话不提供这种机制实现。因此,StoredHttpSession 项目没有生命周期并保留在数据库中。您可以通过设置 cronjob 删除当前时间 - 修改时间 > 3600 秒的 StoredHttpSession 项目来解决此问题。)

【问题讨论】:

    标签: java database jakarta-ee cron hybris


    【解决方案1】:

    这是我刚刚创建的一个 groovy,它可以帮助您实现目标:

    import de.hybris.platform.core.model.web.StoredHttpSessionModel
    import de.hybris.platform.servicelayer.search.FlexibleSearchQuery
    import de.hybris.platform.servicelayer.search.SearchResult
    
    String queryString = " SELECT {pk} FROM {StoredHttpSession}  WHERE {modifiedTime} < ?specificTime"
    
    final Date specificTime = new Date();
    final FlexibleSearchQuery query = new FlexibleSearchQuery(queryString, Collections.singletonMap("specificTime", specificTime));
    
    final SearchResult<StoredHttpSessionModel> searchResult = flexibleSearchService.search(query);
    
    List<StoredHttpSessionModel> assetModelList = searchResult.getResult();
    
    for (StoredHttpSessionModel storedHttpSession : assetModelList) {
        println "storedHttpSession with id session :" +storedHttpSession.sessionId + " is removed !"
        modelService.remove(storedHttpSession);
    }
    

    specificTime 更改为您要使用的正确日期。

    您可以直接在 ScriptingJob 中使用此脚本并将其分配给 cronJob,您可以按照本教程进行操作: http://javainsimpleway.com/dynamic-cron-job-cron-job-scripting/

    但是,您也可以创建经典的 cronjob,使用相同的灵活搜索来检索要清除的项目

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-08
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2019-02-02
      • 1970-01-01
      相关资源
      最近更新 更多