Java 用于删除StoredHttpSession项目的Cronjob Hybris

Java 用于删除StoredHttpSession项目的Cronjob Hybris,java,database,jakarta-ee,cron,hybris,Java,Database,Jakarta Ee,Cron,Hybris,我需要一些关于我在这里要说的建议的帮助。我需要为sap hybris平台创建一个cronjob,该平台将删除超过X秒的StoredHttpSession项。我真的需要一些建议,因为我真的不知道如何开始。非常感谢 本段摘自SAP文档。 (Tomcat提供的常规HttpSessions会被主动监控是否失效(StandardManager.processExpires)。一旦会话成为失效候选,该会话将被销毁,并触发sessionDestroyed事件。OOTB Spring会话实现不提供此类机制。因此

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

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

我刚刚创建了一个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);
}
import de.hybris.platform.core.model.web.StoredHttpSessionModel
导入de.hybris.platform.servicelayer.search.FlexibleSearchQuery
导入de.hybris.platform.servicelayer.search.SearchResult
String queryString=“从{StoredHttpSession}中选择{pk},其中{modifiedTime}<?specificTime”
最终日期指定时间=新日期();
最终FlexibleSearchQuery查询=新的FlexibleSearchQuery(queryString,Collections.singletonMap(“specificTime”,specificTime));
最终搜索结果SearchResult=flexibleSearchService.search(查询);
List assetModelList=searchResult.getResult();
对于(StoredHttpSessionModel storedHttpSession:assetModelList){
println“id为session:+storedHttpSession.sessionId+”的storedHttpSession已删除!”
modelService.remove(storedHttpSession);
}
specificttime
更改为您想要使用的正确日期

您可以在
ScriptingJob
中直接使用此脚本并将其分配给cronJob,您可以按照本教程进行操作:

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