Я использовал подобную пару для одного из моих проектов, но вместо RoR я использовал Python. Я не думаю, что есть большая разница.
В общем, в этом типе программирования нет ничего конкретного. Две самые важные вещи, о которых вы должны заботиться:
- хорошая модульность;
- Хорошо продуманный протокол между RoR и Java.
Сначала речь идет о точном разложении функциональности между частями системы. У нас есть некоторые проблемы из-за того, что мы не понимаем, какую часть работы должен выполнять Java, а какую - Python. В общем, вы должны связать вместе все функции, которые находятся близко друг к другу, и вещь, которая находится далеко, должна быть связана в очень немногих местах. Я думаю, вы знаете правила хорошей модульности, но в случае составления разных языков это должно быть продумано гораздо более тщательно. Вы также можете быть заинтересованы в создании нескольких отдельных Java-сервисов (например, один для кэширования базы данных и другой для всех остальных), чтобы иметь возможность свободно комбинировать их или даже использовать позже в других проектах.
Второе касается связи между вашими частями. Я вижу два способа общения: через базу данных и через чистый сетевой протокол. Первые все равно нуждаются в некотором сетевом взаимодействии, поэтому мы использовали чистый сетевой протокол, без какого-либо другого способа соединения частей.
Мы много экспериментировали с SOAP , но он дал сотни ошибок: этот протокол вполне подходит для подключения сервисов, написанных на одном языке (например, от Java к Java), но ужасен для подключения сервисов на разных языках - автоматически инструменты для генерации WSDL дали разные результаты для Java и Python, а создание схемы вручную было трудоемким и трудоемким.
Так мы привыкли ОТДЫХ . Он использует все функции протокола HTTP, такие как все четыре основных метода HTTP (POST, GET, PUT, DELETE), коды ошибок и многое другое, поэтому он охватывает практически все, что вы можете. Единственное ограничение для REST - это то, что он не может хранить состояние, поэтому вам может потребоваться реализовать собственный механизм сессий.
Если вам не очень нравится REST и вы ищете какой-то реальный пример, см. API Graph Facebook , а для реализации служб REST в Java вы можете использовать Restlets .