Java 用于删除StoredHttpSession项目的Cronjob Hybris
我需要一些关于我在这里要说的建议的帮助。我需要为sap hybris平台创建一个cronjob,该平台将删除超过X秒的StoredHttpSession项。我真的需要一些建议,因为我真的不知道如何开始。非常感谢 本段摘自SAP文档。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会话实现不提供此类机制。因此
(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,使用相同的灵活搜索来检索要清除的项目