1

我正在编写一个内部 Java Applet 来通过 HTTP 上传文件。我开始使用内置的 ClientHttpRequest,如果我想一个接一个地发布,它会很好用。当我尝试同时发布多个线程时,服务器端的某些东西会出现问题,并且对于大文件,连接会挂起,同时仍会上传较小的文件。(大的似乎在 10 兆左右)经过大量查找,我无法找到可以设置为从该错误中恢复的超时,但最终从 Apache 中找到了 ClientHttp,它确实提供了设置超时的机制。它的问题在于,虽然它声称能够在多线程程序中工作,但实际上它只执行一个又一个请求。

虽然发布确实不需要多个线程(HttpClient 似乎确实比 ClientHttpRequest 快一点),但获得额外的速度提升会非常好,因为可以同时发送很多较小的文件。

这些文件是通过 HTTP 发送的,因为我们希望使用他们的会话 cookie 对已经登录的用户使用相同的身份验证。

因此,我正在寻找一种方法来设置 ClientHttpRequest 超时或 HttpClient 的代码,该代码实际上将按照承诺同时发送多个请求。

我在线程之间共享相同的 HttpClient 实例并使用多线程连接管理器(没有它甚至无法工作)就像文档说的那样,它没有帮助。

任何帮助将不胜感激,如果您需要任何澄清,请告诉我。

4

1 回答 1

1

查看您的代码示例可能会有所帮助。

也许问题出在小程序环境上。您是在 appletviewer、IDE 还是在浏览器中测试它?浏览器通常设置为将与同一 Web 服务器的连接数限制为 2。您可以尝试添加一个 main() 并独立运行它以查看是否可以解决问题。

于 2008-10-09T21:16:06.050 回答