Java 请求参数被丢弃在Tomcat中

Java 请求参数被丢弃在Tomcat中,java,web-services,tomcat,servlets,jersey,Java,Web Services,Tomcat,Servlets,Jersey,客户端代码: FormDataBodyPart f = new FormDataBodyPart(...); FormDataBodyPart f2 = new FormDataBodyPart(...); MultiPart multiPart = new MultiPart(); multiPart.bodyPart(f); multiPart.bodyPart(f2); //Execute Call WebResource wr =

客户端代码:

    FormDataBodyPart f = new FormDataBodyPart(...);
    FormDataBodyPart f2 = new FormDataBodyPart(...);
    MultiPart multiPart = new MultiPart();
    multiPart.bodyPart(f);
    multiPart.bodyPart(f2);

    //Execute Call
    WebResource wr = resource().path(Url.X);
    wr = wr.queryParam("subjectId", "value_something");
    ClientResponse response = wr.type(MediaType.MULTIPART_FORM_DATA).post(ClientResponse.class, multiPart);
服务器代码:

String id = req.getParameter("subjectId");
req是HttpServletRequest-由spring注入

@Context
protected HttpServletRequest httpServletRequest;
问题:在某些环境中,检索到的
id
参数为空。在过滤器中,我们打印了要登录的while请求参数映射,它只是空的。
我们认为问题出在服务器端,因为同一个客户端与不同的环境执行的结果不同。
在某些服务器上,所有客户端的参数始终为空,而在其他环境中,所有客户端的参数始终为空。
所以看起来Tomcat方面有问题,但是。。。在哪里

更新:服务器上wireshark的结果:

[Malformed Packet: MIME multipart]
Expert Info (Error/Malformed): Malformed Packet (Exception occurred)
Message: Malformed Packet (Exception occurred)
在某些服务器上,尽管存在错误-参数在那里,而在其他服务器上,参数丢失



更新:AccessLogValve记录的请求包含参数
127.0.0.1--[26/Nov/2012:03:04:58-0800]“POST/api/get检索?x=yHTTP/1.1”200 16

所以,问题可能是Tomcat中的某个地方抛出了这些参数…

检查请求对象是否有效?
您还可以尝试其他方法,如使用request.getParameterMap()读取参数或读取输入流。

我们遇到了这个问题,结果是我们允许多个线程访问
HttpServletRequest
对象。这是不允许的。它不是线程安全的。

在tomcat之前有版本代理吗?Ngnix httpd haproxy?我们正在使用这个-我还尝试了不通过负载平衡器的直接访问。直接访问也失败了,但我需要再次检查direct是否确实在某些地方没有映射…我会尝试tcpdump http通信从客户端流出,然后进入tomcat,以查看请求中是否存在该参数。因此它看起来像一个jersey bug。。。您可能会进行一些jersey调试,然后看到请求出现,也许您会指出有问题的代码。在请求中获得了答案。getParameterMap()为空