cronjob用于delete storedhttpsession items hybris

yzuktlbb  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(648)

我需要一些关于我在这里要说的建议的帮助。我需要为saphybris平台创建一个cronjob,删除超过x秒的storedhttpsession项。我真的需要一些建议,因为我真的不知道如何开始。谢谢!
本段来自sap文档(tomcat提供的常规httpsessions被主动监视是否失效(standardmanager.processexpires)。一旦某个会话是无效的候选会话,该会话就会被销毁,并触发sessiondestroyed事件。ootbspring会话实现没有提供这种机制。因此,storedhttpsession项没有结束生命并保留在数据库中。您可以通过设置cronjob来解决这个问题,删除storedhttpsession项,其中当前时间修改时间>3600秒。)

pwuypxnk

pwuypxnk1#

下面是我刚刚创建的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,使用相同的灵活搜索来检索要清除的项

相关问题