8

我正在使用 Eclipse、Tomcat7 和 Jersey 实现开发一个非常简单的 REST Web 服务,并连接到 MySQL。查看球衣文档,我知道每个请求都会创建一个根资源类的新对象。但我不知道是否每个请求都是独立的,例如如果一个请求必须等待很长时间,服务器会正​​常接受更多请求吗?

问题是:我有 2 个主要类,1 个类实现带有注释的 Jersey(Proxy.java),以及连接到 BD(Notificator.java)的其他类,这个类(Singleton)只有一个实例,以便仅使用 1 个 Connection 对象。实现 Jersey 的类使用这个类。因此,如果其中一个请求被阻止,我不知道其他请求是否会运行,因为它们使用的是相同的 (Notificator.java) 实例。

关系是(Proxy.java)的 N 个实例使用唯一一个(Notificator.java)女巫有一个与 MySQL 的连接。

4

2 回答 2

3

Jersey 是在 servlet 之上开发的。每个传入请求都有一个新线程。您的代码正在为所有线程创建瓶颈,因为存在对单个可用连接对象的争用。如果您有多个请求,那么只有一个请求将使用该连接,其他请求必须等待。如果等待时间不是太长,那么没有问题。但是,如果等待时间超过 HTTP 请求超时,那么您的其他请求可能会以超时结束。

我了解由于某些业务要求/复杂性,您可能遇到单一连接瓶颈。因此,在所有这些我们无法同时处理所有请求并且可能有多种原因的情况下,我们应该将我们的 Web 服务创建为异步的。异步 Web 服务在 SUBMIT REQUEST-> REQUEST ACCEPTED(将异步处理)的模型上工作,并返回用于轮询的 JOB URL-> CLIENT POLLS,直到 JOB 未完成。

希望能帮助到你!

于 2013-05-04T05:38:52.613 回答
0

尝试数据库连接池,更多信息在这里:

http://en.wikipedia.org/wiki/Connection_pool

JDBC中如何建立连接池?

于 2013-04-03T09:40:46.947 回答