У меня была такая же проблема.Одной из причин является ошибка в Spring 3.0.0.Я обновился до 3.0.5, и количество повторений уменьшилось до двух.
Другая причина была в том, что мой класс с методом @Scheduled получал экземпляр дважды.Это произошло потому, что контекстная конфигурация загружалась дважды.В web.xml я указывал мои ContextLoaderListener и DispatcherServlet на один и тот же файл конфигурации контекста:
...
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
...
WEB-INF / applicationContext.xml - это конфигурация контекста по умолчанию для ContextLoaderListener.Поэтому убедитесь, что ваш ContextLoaderListener и ServletDispatcher используют разные контекстные файлы.Я закончил тем, что создал /WEB-INF/spring-servlet.xml без каких-либо определений бина, и он работал безупречно.