我希望能够提供一个有效的解决方案,将在tomcat服务器上运行的Java / JSP应用程序限制为最大数量的同时进行的hibernate Oracle SQL查询。
实施例: 如果查询限制为3,则只有3个应用程序用户可以同时触发并运行特定查询。如果第4个用户出现(并且没有其他用户完成查询),则会向该用户显示他们必须先等待的警报。一旦某个地点变得可用,将提醒用户。
每次用户触发查询时,我都希望将一个排序指示符存储到文件/数据库中,该指示符既可以代表所有用户,也可以只代表当前正在处理的总查询数。 现在,我知道这可能不是很有效,所以我正在寻求帮助。
谢谢。
答案 0 :(得分:0)
在文件/ db中存储效率不高,可能会给响应带来轻微的开销。您应该将值存储在内存中。您只能在用户的session scope
中存储一个变量(如果要限制应用程序级别,可以存储在application scope
中)。通过这种方式,您无需管理像Map一样的公共存储,您必须使用User Ids(每个用户限制的情况)进行引用。
您访问这些范围的方式因您使用的Web框架而异。此外,(假设为每个用户限制)您可以在要执行休眠查询时递增变量(例如currentQueryCount
),并在查询完成时递减相同的值。如果超出限制,您可以在每次请求时检查此变量,如果是,您可以发送错误响应。
答案 1 :(得分:0)