Доступ к запущенной Java-программе из командной оболочки - PullRequest
0 голосов
/ 31 мая 2011

Я ищу способ доступа к запущенной Java-программе из командной строки.Лучше всего сделать следующее:

Запуск java-приложения:

bash$java -jar MyBundle.jar App

Доступ к приложению:

bash$test.sh param1 param2

Итак, test.sh вызывает Appс MyBundle.jar как-то и передает значения param1 & param2.

Важно: я ищу очень быстрый подход.App удерживает соединение с базой данных, и запускать App каждый раз, когда мне нужен доступ, очень дорого, делайте DB.

Мне нужно решение, которое будет работать в Ubuntu и Debian.Если он будет работать на Mac - отлично.

Любая помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Было бы довольно просто открыть сокет TCP / IP и использовать netcat из оболочки.

Java-код

final ServerSocket serverSocket = new ServerSocket(9050);
while (true) {
    final Socket socket = serverSocket.accept();
    java.util.logging.Logger.getAnonymousLogger().info("Accepted");
    final BufferedReader br = new BufferedReader(new InputStreamReader(
            socket.getInputStream()));
    final String input = br.readLine();
    final BufferedWriter bw = new BufferedWriter(
            new OutputStreamWriter(socket.getOutputStream()));
        bw.write("You said [" + input + "]");
    bw.flush();
    socket.close();
}

Код оболочки

echo 'bla' | nc localhost 9050

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

1 голос
/ 31 мая 2011

Я думаю, что вам нужно подход клиент-сервер.Ваше приложение является сервером, оно работает как фоновый процесс и прослушивает соединения на каком-либо порту.А ваш клиент отправляет запросы на сервер и возвращает ответ.

Быстрый и простой способ реализовать это в Java - заключить ваше приложение в контейнер сервлета Jetty .Например, вы можете настроить его так, чтобы он возвращал ответы JSON, которые легко обрабатывать.

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