1

我有一个在 localhost:8080 端口上运行的 tomcat 服务器 当我对服务器运行多个线程/请求时,每隔一段时间,对这些请求的响应就会发生冲突。我的意思是,如果 Alice 和 Bob 发出请求,Alice 可能会得到属于 Bob 的响应,反之亦然。此外,每隔一段时间,Alice 和 Bob 可能都会收到 Alice 的请求。请参见下面的示例。注意:这只发生在 3% 的时间里,但是 2000 多个请求中有 3% 是很多失败的。

  1. 爱丽丝->发送请求1
  2. 鲍勃->发送请求2
  3. 爱丽丝->接收响应2
  4. 鲍勃->接收响应1

我的问题是,为什么会发生这种情况,有没有办法解决它?

也许我缺少配置中的某些内容。


这是一些更多信息,以便我可以涵盖基本问题。我正在使用 Jersey api 客户端与服务器(com.sun.jersey.api.client.WebResource)交谈,该服务器应该是线程安全的(至少它声称是这样)

这不是线程问题。1)我已经验证每个线程都有自己的客户端实例。2)我同时运行多个进程(都是单线程的)并发现相同的结果。

我在服务器端用一个线程运行它们,但冲突仍然发生。

这是我的 catalina 配置(在 server.xml 文件中)

<Connector port="8080" protocol="HTTP/1.1"
               maxThreads="10" minSpareThreads="0" maxSpareThreads="5"
               URIEncoding="UTF-8"
               connectionTimeout="20000"
               redirectPort="8443" />

根据我对 HTTP 的了解,每个请求都会打开(或重用)一个新端口。然后,服务器应该将响应发送到请求来自的确切端口。如果是这种情况,则不应发生冲突。

4

1 回答 1

0

所以我发现答案真的在于服务器端的 XML 验证器。我发现这个讨论很有帮助。

哪个 xml 验证器适用于多线程项目

于 2013-07-01T14:52:17.570 回答