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

将Java/JSP应用程序限制为一定数量的hibernate查询,java,oracle,performance,hibernate,jsp,Java,Oracle,Performance,Hibernate,Jsp,我想获得一些帮助,以找到一个有效的解决方案,将运行在tomcat服务器上的Java/JSP应用程序限制为同时执行hibernate Oracle SQL查询的最大数量 例如: 如果查询限制为3,则只有3个应用程序用户可以同时触发和运行特定查询。如果出现第四个用户(没有其他用户完成查询),则该用户将收到一个警报,提示他们必须先等待。一旦一个地点可用,用户将收到警报 每次用户触发查询时,我都希望将排序指示器存储到一个文件/数据库中,该文件/数据库将表示所有用户或当前正在处理的查询总数。 现在,我知道

我想获得一些帮助,以找到一个有效的解决方案,将运行在tomcat服务器上的Java/JSP应用程序限制为同时执行hibernate Oracle SQL查询的最大数量

例如: 如果查询限制为3,则只有3个应用程序用户可以同时触发和运行特定查询。如果出现第四个用户(没有其他用户完成查询),则该用户将收到一个警报,提示他们必须先等待。一旦一个地点可用,用户将收到警报

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


多谢各位

存储在文件/db中不是很有效,它可能会给响应增加一些开销。您应该将该值存储在内存中。您可以在用户的
会话范围
中只存储一个变量(如果您想在应用程序级别进行限制,可以在
应用程序范围
中存储)。这样,您就不需要管理像地图这样的公共存储,在地图中您必须使用用户ID进行引用(对于每个用户的限制)


访问这些范围的方式将根据您使用的web框架而有所不同。另外,(假设每个用户的限制)当您准备执行hibernate查询时,您可以增加变量(例如
currentQueryCount
),当查询完成时,可以减少变量。在每个请求中,如果超出限制,您可以首先检查此变量,如果是,您可以发送错误响应。

存储在文件/db中不是很有效,它可能会给响应增加一些开销。您应该将该值存储在内存中。您可以在用户的
会话范围
中只存储一个变量(如果您想在应用程序级别进行限制,可以在
应用程序范围
中存储)。这样,您就不需要管理像地图这样的公共存储,在地图中您必须使用用户ID进行引用(对于每个用户的限制)


访问这些范围的方式将根据您使用的web框架而有所不同。另外,(假设每个用户的限制)当您准备执行hibernate查询时,您可以增加变量(例如
currentQueryCount
),当查询完成时,可以减少变量。在每个请求中,如果超出限制,您可以首先检查此变量,如果超出限制,您可以发送错误响应。

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

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

是的,我正在使用一个,但这不是我想要的解决方案。我想限制特定查询的同时查询量。是的,我正在使用一个,但这不是我想要的解决方案。我想限制特定查询的同时查询量。我使用的是Spring框架。是否所有会话都可以访问和修改应用程序范围的变量?如果一个会话对其进行了修改,则所有其他会话都可以访问更新?请检查此链接。它解释了解决这一问题的两种方法。另外,如果答案有帮助,请接受。我使用的是Spring框架。是否所有会话都可以访问和修改应用程序范围的变量?如果一个会话对其进行了修改,则所有其他会话都可以访问更新?请检查此链接。它解释了解决这一问题的两种方法。此外,如果答案有帮助,请接受。