Все мое приложение однопоточное. Почему синхронизированное решение
это? * * 1002
Нет, это не однопоточный. Веб-сервис вызывается несколькими потоками, получающими клиентские запросы.
Реализация метода веб-службы должна заботиться о всех проблемах синхронизации так же, как и в реализации сервлета, получающей несколько запросов, необходимо следить за безопасностью потока.
В вашем случае, добавив синхронизированный, вы убедились, что одновременная обработка запроса клиента веб-службы не привела к повреждению из-за проблем с потоками, и вы по существу сериализуете клиентские запросы (и существует доступ к БД).
Вы не опубликовали никакого кода, чтобы увидеть, что вы делаете неправильно, но поскольку синхронизация на уровне веб-методов решает вашу проблему, вы либо не выполняли синхронизацию на уровне БД, как вы говорите правильно, либо проблемы с потоками повредили общие переменные на уровне веб-сервисов, обращающихся к БД.
При использовании synchronizing
в веб-методе код является поточно-ориентированным, но производительность будет ухудшаться, поскольку вы будете одновременно обслуживать 1 клиента.
Зависит от ваших требований