Я никогда не видел, чтобы JNDI использовался в качестве механизма межпроцессного взаимодействия между запросами и ответами.Я не верю, что это будет продуктивная линия атаки.
Вы считаете, что веб-службы неприемлемы, когда полезные нагрузки сложны.Я не согласен, я видел много успешных проектов, использующих довольно большие полезные нагрузки, со многими вложенными классами.Тривиальный пример: клиенты с заказами с линиями заказов с продуктами с ... и т. Д.
Очевидно, что размеры полезной нагрузки желательно сохранять небольшими, затраты на сериализацию и сетевые затраты будут выше, а большие объекты будут дороже.Но гораздо предпочтительнее иметь одну большую просьбу, чем много маленьких.«Занятый» интерфейс не будет хорошо работать в сети.
Я подозреваю, что одна проблема, с которой вы можете столкнуться, состоит в том, что некоторые из серверных классов не являются чистыми данными, они относятся к классам, которые имеют смыслна сервере вы не хотите, чтобы эти классы были в вашем клиенте.
В этом случае вам нужно создать слой "адаптера".Это скучная работа, но независимо от того, какую технику межпроцессного взаимодействия вы используете, вам потребуется это сделать.Вам нужно то, что я называю объектами передачи данных (DTO) - они представляют полезную нагрузку, понятную клиенту, использующую только классы, приемлемые для клиента, и которые сервер может использовать и создавать.
Предположим, что выиспользовать технологию XXX (JNDI, веб-сервис, прямой вызов сокета, JMS)
Client --- sends Document DTO --XXX---> Adapter transform DTO to server's Document
и аналогично в обратном порядке.Я утверждаю, что независимо от того, какой XXX выбран, у вас есть одна и та же проблема, вам нужен клиент для работы с «урезанными» объектами, которые не раскрывают ни одной детали реализации сервера.
За создание адаптера отвечаети понимание DTO.
Я считаю, что работать с веб-сервисами RESTful с использованием JAX / RS очень легко, если у вас есть набор DTO, и создание веб-сервисов занимает считанные минуты.