У нас возникла проблема, когда значения, которые мы получаем через @PathVariable или через привязку при умеренной нагрузке, назначаются неправильным переменным.
Для выполнения этих тестов мы всегда используем одни и те же URL-адреса. Медленное нажатие на URL дает правильные результаты каждый раз.
Мы используем Spring 3.0.5.RELEASE, но устали до 3.1.2.RELEASE, и проблема все еще существует. Мы не видим ничего другого, что изменилось в последнее время, и у нас есть эти сервисы в производстве уже более года, и они, похоже, только недавно начали их бросать.
Пример кода для привязки:
@RequestMapping(value = "config/selectItem")
public ModelAndView selectItem(@Valid selectItemCommand command, BindingResult bindResults) {
if (!"test".equals(command.getName())
{
//Fails into here
int i =0;
}
}
Пример кода для переменных пути:
@RequestMapping(value = "config/selectItem/{name}",method = RequestMethod.GET)
public ModelAndView selectItem(@PathVariable("name") String name)
{
if (!"test".equals(name))
{
//Fails into here
int i = 0;
}
}
Я добавил запрос HttpServletRequest в список параметров, и URL-адрес, который он показывает, имеет правильные значения.
Я совсем забыл, но мы столкнулись с этим около года назад, и в то время я поставил тикет, который, как мне казалось, разрешил проблему, но это не так. Spring MVC отбрасывает @PathVariable