Java межпроцессное взаимодействие - PullRequest
3 голосов
/ 13 сентября 2009

У меня есть ситуация, когда мне нужно отправить команды в работающее приложение Java, теперь я использую сокет tcp / ip для отправки команд в приложение с помощью пункта контекстного меню Internet Explorer. Но как только приложение запускается, антивирусные сканеры жалуются, что приложение начало прослушивать, хотя я слушаю только локальные соединения. Я думаю, что это может сбить с толку пользователей. Я смотрю на другие способы общения, не разозлив AV сканеры?

Ответы [ 4 ]

4 голосов
/ 13 сентября 2009

Для этого лучше всего использовать файловую очередь FIFO. Или используя собственный доступ Java / собственный интерфейс Java для записи в NamedPipe или в общую память. Если вы идете по маршруту JNA / JNI, вы можете создать именованное событие .

Но, вероятно, нет способа сделать то, что вы хотите, с какой-либо эффективностью, не идя по пути JNA / JNI.

3 голосов
/ 13 сентября 2009

Вы можете использовать Java Management Extentions (JMX) для предоставления методов в запущенном процессе через простой веб-интерфейс.

1 голос
/ 13 сентября 2009

Сокеты - довольно традиционный способ выполнения IPC, но если вы действительно хотите избежать их, вы могли бы найти обходной путь, используя локальную файловую систему. Вы не захотите использовать стандартные операции чтения / записи файлов, поскольку вы, скорее всего, захотите эффективно реализовать очередь в файловой системе.

Если бы I собирался реализовать IPC через файловую систему, я бы, вероятно, использовал SQLite (, который может быть поточно-ориентированным при компиляции) и имел бы одну таблицу для каждого слушателя. Вероятно, я бы использовал таблицу из одного столбца для вставки сообщения, и слушатель просто вытянул бы строку с самым низким rowid , а затем удалил указанную строку.

Но мой подход совсем не специфичен для Java, поэтому могут быть более эффективные способы сделать это с помощью Java (например, ответ @ darthcoder).

0 голосов
/ 13 сентября 2009

Многие люди используют что-то вроде JMS в этом сценарии.

...