Вы должны рассмотреть EJB с состоянием, так как кажется, что клиентам нужно нетривиальное состояние, чтобы ответить на серию запросов относительно одного и того же состояния от одного пользователя. Тем не менее, полные EJB-компоненты являются своего рода медведем для правильной записи и настройки.
Что касается дизайна, я бы не хотел, чтобы клиенты отправляли пользовательскую информацию на уровень бизнес-логики. Во-первых, это просто передает проблему клиенту, нет? загрузить, сохранить и отправить эту информацию? Кроме того, это заставляет меня нервничать с точки зрения безопасности, позволяя предположительно менее защищенному клиентскому уровню передавать конфиденциальные пользовательские данные на более защищенный внутренний уровень, который затем доверяет этой информации и использует ее.
Но, действительно, я думаю, что вы уже упомянули лучший подход: ленивая загрузка Hibernate. Вы просто взаимодействуете с объектом и позволяете ему загружать данные по требованию. В этом отношении, чтобы хорошо работать с Hibernate, объект User должен быть небольшим, чтобы его загрузка была достаточно быстрой и помещала всю большую тяжелую информацию в дочерние объекты или другие объекты. Тогда не имеет значения, нужно ли вам много загружать Пользователя; это всего лишь «указатель» на другую информацию.
Я не думаю, что это что-то меняет, если вы используете JAAS, нет. Хотя я могу сказать, что для ваших целей JAAS может быть, а может и не стоить. За то время, которое у вас уходит на интеграцию, запись разрешений, использование этих разрешений, устранение последствий SecurityManager и т. Д., Вы, возможно, могли бы в любом случае просто написать для себя простую структуру разрешений.