Пружинный синхронизированный метод НЕ СИНХРОНИЗИРОВАННЫЙ
Среда:
Apache Tomcat 7Ява 7оракул 11 гзатмениеapache jmeter 2.1весназимовать
Я работаю над веб-приложением, которое получает запросы от клиентов и генерирует для них порядковый номер в соответствии с типом запроса, который будет использоваться при дальнейшей обработке. Для генерации уникального порядкового номера у меня есть метод, чтобы получить текущий порядковый номер из DB и увеличить его на 1, а затем обновить эту запись новым порядковым номером.
Функция:
@Transactional
public synchronized Long generateSequenseNumber(String requestType) {
//get current sequence number for this requestType
//increment it by one
//update it in DB
}
Функция работает нормально, но проблема в том, что когда я вызываю приложение из инструмента стресс-тестирования (JMeter) для отправки 50 запросов в секунду, я получаю исключение ниже:
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [
хотя функция синхронизирована.
Любое предложение будет полезно. Благодарю.