RMI хорошо работает для нас. Существуют ограничения, такие как невозможность перезвонить клиенту, если вы не можете напрямую подключиться к этому компьютеру (не работает, если клиент находится за брандмауэром). Вы также можете легко обернуть ваше сообщение в SSL или туннелировать через HTTP, который можно обернуть в SSL.
Если вы в конечном итоге используете это, не забывайте всегда устанавливать последовательную версию класса, который распространяется на клиента. Вы можете установить его на 1 л, когда создаете его, или если у клиента уже есть класс, используйте serialver.exe для обнаружения серийного номера существующего класса. В противном случае, как только вы измените или добавите открытый метод или переменная совместимость с существующими клиентами нарушится.
статический финал long serialVersionUID = 1L
РЕДАКТИРОВАТЬ: каждый запрос RMI, поступающий на сервер, получает свой собственный поток. Вы не должны справляться с этим самостоятельно.
РЕДАКТИРОВАТЬ: Я думаю, что некоторые детали были добавлены позже в вопросе. Вы можете туннелировать RMI через HTTP, а затем использовать балансировщик нагрузки.
Я недавно начал играть с Гессианом, и это очень многообещающе. Он изначально использует HTTP, что делает его проще, чем RMI по HTTP, и это двоичный протокол, что означает, что он быстрее, чем все протоколы на основе XML. Начать работать с Гессианом очень легко. Недавно я сделал это, внедрив Jetty в наше приложение, настроив сервлет Hessian и заставив его реализовать наш интерфейс API. Самое замечательное в Hessian - это простота ... ничего похожего на JMS или RMI через HTTP. Существуют также библиотеки для гессенского языка на других языках.