我在端口localhost:8080上运行一个tomcat服务器 当我对服务器运行多个线程/请求时,每隔一段时间对这些请求的响应就会发生冲突。我的意思是,如果Alice和Bob发出请求,Alice可能会得到属于Bob的响应,反之亦然。此外,爱丽丝和鲍勃每隔一段时间都会得到爱丽丝的请求。见下面的例子。注意:这只发生在3%的时间,但2000多个请求中有3%是很多失败。
我的问题是,为什么会发生这种情况并且有办法实现吗?
也许我缺少配置中的某些内容。
这是一些更多信息,以便我可以涵盖基本问题。 我使用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的理解,每个请求都会打开(或重用)一个新端口。然后,服务器应该将响应发送到请求来自的确切端口。如果是这种情况,则不应发生冲突。
答案 0 :(得分:0)
所以我发现答案真的在于服务器端的XML验证器。 我发现这个讨论很有用。
which xml validator will work perfectly for multithreading project