Это сводит меня с ума. У меня есть простое весеннее приложение с файлом контекста сервлета, настроенным так:
<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 из-за закрытия сокетов и т. Д.
Корень проблемы - вызов контроллера дважды. Кто-нибудь знает, почему это происходит?