Задать вопрос

Как правильно связать приложение на Java и Nginx?

Добрый день, Хабраспецы!

Возник вопрос об оптимальном способе связать Nginx и Java-приложение.

Дано:

Есть приложение на Java, которое принимает данные в виде строки первым аргументом (args[0]) и отдает через System.out.println(). На входе и на выходе строки в формате JSON.
Оно также работает с БД через activeJDBC и реализует бизнес-логику.
Сейчас выглядит в виде Executable jar

Есть связка ngnix+php-fpm.

Сейчас взаимодействие с web выглядит так:
1)Клиент отправляет по адресу site/some.php POST запрос с JSON-ом
2)Nginx принимает запрос и оправляет запрос через fastCGI к PHP
3) PHP запускает jar (java -jar app.jar json)
4) Java-приложение отвечает
5) PHP ретранслирует ответ Nginx'у, а тот отвечает клиенту.

Все это работает весьма долго, так как каждый грузится JVM.

Вопрос:
Как избавиться от не особо нужной прослойки в виде PHP?,
При этом не прибегая к JavaEE-технологиям и тяжелым серверам типа GlassFish.

В идеале хотелось бы увидеть примеры с кодом, чтобы быстрее разобраться.
  • Вопрос задан
  • 8908 просмотров
Подписаться 6 Оценить Комментировать
Решения вопроса 1
@relgames
Java Developer
Запускать java на каждый запрос — это, конечно, жесть.
Правильный подход — запустить приложение один раз и оно должно работать, при этом должен быть механизм по посылке запросов в приложение. Простейший способ, как тут уже указали, это Jetty, но лично я бы использовал Embedded Jetty, посмотрите, как там реализован HelloHandler
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Moxa
можно написать простенький сервлет, запихнуть его в jetty… он будет принимать json, обрабатывать его с помощью имеющийся логики и возвращать обратно…
Ответ написан
Комментировать
mitaichik
@mitaichik
Возможно подойдет https://www.nginx.com/resources/wiki/modules/java_...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы