这让我疯了。我有一个简单的spring应用程序,只有一个servlet上下文文件配置如下:
<context:component-scan base-package="au.com.mypackage.service" />
<context:annotation-config />
<mvc:annotation-driven />
一个简单的控制器:
@Controller
public class MyController {
@RequestMapping(value = "/data/{id}", method=RequestMethod.GET)
@ResponseBody public Bean getData(@PathVariable String id) {
Bean bean = new Bean();
bean.setSomething("hello");
bean.setSomethingElse(5);
return bean;
}
利用消息转换器来完成它的工作。然后我从SoapUI提交此请求:
GET http://localhost:8080/spring/data/123 HTTP/1.1
Accept-Encoding: gzip,deflate
Accept: application/json
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8080
它似乎工作正常。但是,当我查看tomcat日志时,我看到控制器被调用了两次。这对JSON来说没问题。但是,当我切换到请求XML时,它出现了可怕的错误。第二个请求(不应该发生)在XStream中因为套接字闭包等而触发大量错误。
问题的根源是调用控制器两次。有谁知道为什么会发生这种情况?
答案 0 :(得分:0)
解决了它。问题似乎是SoapUI。我切换到WizTools RESTClient并且双重调用已停止。我不知道为什么SoapUI这样做,虽然我得到的印象是第二次调用始终是XML,无论第一次调用是什么。