Как общаться с существующим Java-процессом - PullRequest
4 голосов
/ 06 мая 2011

Как передать некоторые значения из сценария оболочки в программу Java, которая уже запущена?

Ответы [ 4 ]

5 голосов
/ 06 мая 2011

Автономное Java-приложение уже запущено, поэтому параметры командной строки не обсуждаются.

Простейшие альтернативы - опрос файлов, сокетов и HTTP-сервера.

Опрос для файлов:

Сделайте ваше Java-приложение для чтения определенного каталога один раз в несколько секунд. Если файл появляется в этом каталоге, прочитайте его и сделайте так, как он говорит. Создайте скрипт оболочки для формирования этого файла.

Цоколь:

Сделать ваше приложение Java для прослушивания на сокете. Используйте netcat или аналогичную утилиту для отправки команд в этот сокет.

HTTP-сервер:

Запустите прослушиватель HTTP в процессе Java. Используйте wget или аналогичную утилиту для отправки ваших команд этому слушателю:

HttpServer httpServer = HttpServer.create(new InetSocketAddress(port), 5);
httpServer.createContext("/", new TileServerRequestHandler());
httpServer.setExecutor(Executors.newCachedThreadPool());
httpServer.start();
1 голос
/ 06 мая 2011

Записать параметры в файл, который ваш процесс периодически запрашивает?Грубо, но это будет работать (но с большим количеством ограничений использования).Или попросите ваш процесс прослушивать сокет и заставить ваш скрипт оболочки отправлять параметры в сокет.

0 голосов
/ 06 мая 2011

Одним из вариантов связи с процессом Java является API службы сообщений Java .Ваш сценарий оболочки может запустить клиент JMS для отправки сообщений в основное приложение.

0 голосов
/ 06 мая 2011

Посмотрите, как передать параметры командной строки в Java здесь

РЕДАКТИРОВАТЬ: новая информация в вопросе означает, что это больше не является подходящим решением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...