多个泽西客户端与单个tomcat服务器的冲突响应

时间:2013-06-25 19:23:38

标签: java http tomcat jersey-client

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

  1. Alice - > sendRequest1
  2. Bob - > sendRequest2
  3. Alice - > receiveResponse2
  4. Bob - > receiveResponse1
  5. 我的问题是,为什么会发生这种情况并且有办法实现吗?

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


    这是一些更多信息,以便我可以涵盖基本问题。 我使用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的理解,每个请求都会打开(或重用)一个新端口。然后,服务器应该将响应发送到请求来自的确切端口。如果是这种情况,则不应发生冲突。

1 个答案:

答案 0 :(得分:0)

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

which xml validator will work perfectly for multithreading project