将Java / JSP应用程序限制为一定数量的hibernate查询

时间:2015-09-21 16:43:51

标签: java oracle performance hibernate jsp

我希望能够提供一个有效的解决方案,将在tomcat服务器上运行的Java / JSP应用程序限制为最大数量的同时进行的hibernate Oracle SQL查询。

实施例: 如果查询限制为3,则只有3个应用程序用户可以同时触发并运行特定查询。如果第4个用户出现(并且没有其他用户完成查询),则会向该用户显示他们必须先等待的警报。一旦某个地点变得可用,将提醒用户。

每次用户触发查询时,我都希望将一个排序指示符存储到文件/数据库中,该指示符既可以代表所有用户,也可以只代表当前正在处理的总查询数。 现在,我知道这可能不是很有效,所以我正在寻求帮助。

谢谢。

2 个答案:

答案 0 :(得分:0)

在文件/ db中存储效率不高,可能会给响应带来轻微的开销。您应该将值存储在内存中。您只能在用户的session scope中存储一个变量(如果要限制应用程序级别,可以存储在application scope中)。通过这种方式,您无需管理像Map一样的公共存储,您必须使用User Ids(每个用户限制的情况)进行引用。

您访问这些范围的方式因您使用的Web框架而异。此外,(假设为每个用户限制)您可以在要执行休眠查询时递增变量(例如currentQueryCount),并在查询完成时递减相同的值。如果超出限制,您可以在每次请求时检查此变量,如果是,您可以发送错误响应。

答案 1 :(得分:0)

您使用的是连接池吗?这将允许您设置最大连接数,通常它们提供一种方法来查询空闲的连接数(您可以将其用于警报)。请参阅Apache的DBCPc3p0