Java EE:当用户超过连接池中定义的数量时

Paw*_*wan 3 servlets connection-pooling java-ee

我正在开发一个基于Java EE的应用程序,使用Tomcat作为服务器,MySQL作为数据库.我为50个用户配置了连接池.

现在我的问题是,如果在给定时间有51个用户(同时)访问该应用程序,第51个用户会发生什么?(因为应用程序一次只支持50个连接)

我的要求是,对于第51个用户,我需要显示一条消息,例如"请在其他时间之后访问".

这可能吗?

Eva*_*van 8

连接池数为50表示从WebApp到数据库的连接数最多为50,这并不意味着可以同时连接到应用程序的最大用户数.

即使很多用户同时使用您的应用程序,也并不意味着所有用户都将使用与DB的连接(例如,空闲,查看静态页面,从缓存获取数据等).

你没有提到你正在使用什么连接池,但我假设你正在使用任何体面的库并适当地使用它,例如每次完成查询以返回连接到池时调用connection.close().

如果是这种情况,那么不要担心,如果池全部用完,下一个用户将排队,直到一个连接返回到池.

因此,您可以添加超时来检测此队列时间,例如,如果在5到10秒内DriverManager.getConnection()未返回,则假定池已满并将用户重定向到具有该消息的静态页面.

请记录此事件,如果您知道您的池在大多数时间已满,那么是时候增加最大连接数了.