Какой сервер вы видите в реальных проектах?
1) Веб-службы ДОЛЖНЫ быть без сохранения состояния: в основном вы должны отправлять имя пользователя / пароль с каждым запросом, каждый запрос должен использовать HTTPS, и я буду аутентифицировать и загружать объект User каждый раз, если это необходимо.
2) Сессия для веб-служб: как в веб-контейнере, поэтому я могу по крайней мере сохранить аутентифицированный объект User и иметь что-то похожее на идентификатор сеанса, поэтому мне не нужно аутентифицировать, загружать и проверять пользователя при каждом запросе.
3) Прикрепленная служба (постоянная служба для запросов): https://jax-ws.dev.java.net/nonav/2.1/docs/statefulWebservice.html
Я понимаю проблемы масштабируемости сервисов с отслеживанием состояния (и сеансов веб-приложений), но иногда у вас должно быть какое-то состояние, например, для корзины покупок. Но вы также можете поместить это состояние в базу данных (использовать серверную часть как своего рода сеанс argh) или передать все состояние клиенту (клиент становится ответственным за повторную отправку всей корзины покупок) .
На самом деле, по крайней мере, для веб-приложений сеанс очень помогает во многих ситуациях. Проблемы масштабируемости можно игнорировать, если ваша система допускает, что «пользователь должен начать все заново, если его веб-сервер выйдет из строя», или вы можете попробовать кластер сеанса, если это неприемлемо.
Как это для веб-сервисов? Я склонен заключить, что веб-службы сильно отличаются от веб-приложений, и принимаю вариант 1) (всегда без сохранения состояния), но было бы неплохо услышать другие мнения, основанные на реальном опыте проекта.