弹簧控制器被调用两次

时间:2011-07-08 05:36:09

标签: spring-mvc annotations

这让我疯了。我有一个简单的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中因为套接字闭包等而触发大量错误。

问题的根源是调用控制器两次。有谁知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

解决了它。问题似乎是SoapUI。我切换到WizTools RESTClient并且双重调用已停止。我不知道为什么SoapUI这样做,虽然我得到的印象是第二次调用始终是XML,无论第一次调用是什么。

相关问题