2013-05-20 4 views
0

Я хочу запускать программу Java и программу Ruby как все время, так и в случае необходимости. Я хочу, чтобы оба связывались друг с другом, не имея одной программы для вызова друг друга каждый раз, когда она (например, JRuby делает, насколько я мог понять).Связь между запущенной программой Ruby и Java

Мне нужно что-то вроде HTTP-запросов или подобных, где я мог бы вызвать метод в программе Java с параметрами, переданными скриптом Ruby.


Конкретный сценарий заключается в следующем: У меня есть Siri-Proxy работает на моем сервере. Когда мой плагин распознает определенную команду, он должен связываться с некоторым промежуточным программным обеспечением, написанным на Java (то, что нужно передать в Middleware, это комната, элемент для обработки и действие).

Таким образом, промежуточное программное обеспечение сможет обрабатывать запрос и быть модульным в отношении большего количества действий, таких как запись параметров в базу данных или взаимодействие с каким-либо домашним программным обеспечением управления.

+3

Я думаю, что этот вопрос слишком широк для переполнения стека. Есть много способов сделать это. –

+0

Именование некоторых из них было бы большой помощью (я упомянул также конкретно HTTP-запросы, так что это было бы неплохо для советов по советам ..) –

+0

Если вы еще не знаете о различных протоколах IPC, я уверен, не совсем готов написать что-то, потому что вы не знаете, как выбрать правильный для своих нужд. И вы не дали нам никакой информации, полезной для нас, чтобы действительно сделать хорошую рекомендацию. Схватив что-то с воздуха, я бы сказал, что вы должны посмотреть SOAP или REST, которые поддерживаются Java и Ruby. –

ответ

3

Я не уверен, что именно вы просите, но Inter-process communication (IPC) is-as already stated-очень широкое поле.

Возможные решения варьируются от простой записи до/чтения из общего файла, через сокеты и встроенных веб-серверов в промежуточное ПО очереди сообщений. В зависимости от вашего случая, отдельный сервер AMQP или Redis, обрабатывающий сообщение, может быть переполнен. Обмен файлами, с другой стороны, является довольно склонным к ошибкам, когда он не выполняется тщательно.

Вы также можете использовать easily сервер HTTP в своей программе Ruby, к которой приложение Java отправляет запросы для установления односторонней связи.

Если вам нужен более точный ответ, пожалуйста, укажите дополнительную информацию. То, что точно - ваша цель? Является ли производительность проблемой? Должно ли это быть только для целей тестирования? Какие данные вы хотите перенести?

+0

IPC уже является хорошим заглавным словом для начала, спасибо! :) Кстати. В моем вопросе я описал свой конкретный случай использования. –