REST 服务的单个 MySql 数据库连接

Zai*_*ain 4 java rest database-connection database-concurrency

我正在开发通过 REST 服务获取和发布数据到数据库的 Android 应用程序。我已经在 J​​ava 中使用 Jersey 和 Tomcat 配置了 REST 服务。

我在 REST 服务启动时创建了单个数据库连接。现在所有的 android 客户端都使用单个数据库连接。现在我只想知道在我的场景中使用单个数据库连接是不是一个好习惯..单个数据库连接可以接受多个并发请求 ??

请建议....

更新 当我测试以下场景时,它给出了不同的结果..我只是使用 Jersey 配置了简单的 REST 服务器和 tomcat,仅使用 Get 注释,在此注释中,我编写代码以使用数据库连接获取 ID 为 300 的员工的姓名在 REST 启动时建立..所以当我http://192.168.15.9:8080/Rest/rest/person/sample在我的网络浏览器上写 我得到员工姓名...然后我创建了批处理文件以在 100 个选项卡中打开 url,我执行了批处理文件。同时我从我的虚拟机打开 url 并立即获得员工姓名..20 秒后员工姓名也显示在 100 个选项卡中..如果单个数据库连接不能用于并发用户,那么为什么我给出响应迅速?? 谁能解释一下??

gd1*_*gd1 5

不,单个数据库连接不应用于并发请求。您应该创建一个连接池(基本上是一组可重用的连接),根据需要从池中取出一个连接,然后将其释放到池中。

不要自己做!

由于您有 Tomcat,您可以配置一个JDBC 数据源,然后使用 JNDI 获取对该数据源的引用。数据源将为您提供连接,而无需您自己创建连接。Tomcat 将在幕后池化(激活、维护和处置)连接。
或者,您可以使用像c3p0这样的自定义连接池,但我强烈建议您使用服务器提供的工具。

如果出于任何原因,您必须在几分钟内部署您的产品(因此您没有时间设置数据源),那么您最好为每个请求打开和关闭连接 - 这很浪费 - 而不是共享一个跨所有请求的单一连接。