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