Если вы используете 2 файла jar отдельно, то каждый файл jar запускает собственный экземпляр JVM и между ними нет ничего общего. Это два отдельных процесса. Полная остановка.
Если вы хотите установить связь между ними, то вот альтернативы: Это зависит от того, какие данные вы хотите передать.
Если это только строки, то: если number of process = 2
, и если вы уверены в этом, то stdin
это лучший путь вперед. Один процесс может запустить другой файл Jar
, создав Process
, используя ProcessBuilder
, а затем используя потоки для связи. Другой процесс может просто сделать System.out
для передачи сообщения. Это предпочтителен для Socket, потому что вам не нужно обрабатывать грациозное закрытие сокета и т. Д. (В случае его отказа, и порт не был успешно скреплен, это может быть большой проблемой)
, если number of jar files > 2
(то есть количество все процессы) и less than
говорят 10
, вы, вероятно, можете использовать Sockets и общаться через Socket. Это должно работать хорошо, хотя дополнительные усилия идут в изящном управлении сокетами.
если number of process
- Large
, то следует использовать JMS
. Он делает много вещей, которые вам не нужно обрабатывать. Слишком большая задача, если количество процессов меньше.
Так что в вашем случае процесс - лучший способ продвижения вперед. Если данные, которые вы хотите передать, могут быть объектами. RMI
можно использовать, если число процессов меньше. Если больше, снова используйте JMS
.
Редактировать: теперь для всего вышеперечисленного существует много грязной работы. Для перемен, если вы смотрите на что-то новое & захватывающее, я бы посоветовал akka. Это актерская модель, которая обменивается данными друг с другом с помощью сообщений. Красота такова, актеры могут быть на одном JVM или другом (очень маленькая конфига), а акка заботится о вас остальным. Я не видел более чистого способа, чем это делать :)
Хорошо, хороший совет, банки используют профиль устройства для веб-сервисов. Думаю, это был бы хороший подход. – smsnheck