1

我已经使用 import javax.xml.ws.Endpoint 创建了一个 Web 服务和一个使用 Service.create 和 service.getPort 连接到它的客户端。现在,仅使用少量连接时,一切都可以正常工作...

但是 - 如果我启动让我说 1000 个并发连接(客户端)到我的 Web 服务,我会得到以下“有时”

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
... then it works ...
... works again ...
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
... works ...
... works ...

(你明白了)

但这并不一致……所以我想知道……有限制吗?(我使用的是JDK提供的轻量级HTTP服务器)

4

1 回答 1

1

没有硬性限制,但连接数肯定是有限的。根据您的硬件和操作系统,限制可能从数百个同时连接到数千个不等。

当您连接到端点时,内置的 HTTPServer 将接受连接并将其交给处理程序。如果传入的请求来得太快,HTTPServer 必须将这些连接放在一个队列中,从而创建一个 backlog。积压是有限的。达到此限制时,新连接将被拒绝,您会在客户端看到错误。

您可以通过执行以下操作来增加积压,

   server = HttpServer.create(address, 128);

这可能会延迟错误,但如果您发送请求的速度快于服务器可以消化的速度,您最终会得到它。

于 2009-11-24T04:25:34.317 回答