Я пишу библиотеку Java, фактически, библиотеку Clojure, но для этого вопроса важно, что она работает на JVM. Эта библиотека должна выполнить некоторый JavaScript. Я пробовал с Nashorn, но я сталкиваюсь с некоторыми ограничениями, которые могут быть слишком сложными для преодоления. В качестве альтернативы, я хочу попробовать NodeJS.
Я хочу, чтобы моя библиотека была автономной, чтобы не зависать от системы, запускающей NodeJS, и тем самым требовать, чтобы определенный механизм развертывания помещал артефакты Java и NodeJS в нужные места, которые должны были быть захвачены двумя разными сетевыми серверами. Однако этот подход вызывает некоторые проблемы.
Я буду разговаривать с NodeJS через HTTP, но я не хочу, чтобы NodeJS открывал определенный порт. Я хочу найти случайный неиспользованный, чтобы не возникало столкновений. Я также хочу контролировать, где идут журналы из NodeJS, чтобы сохранить их с остальной частью моего приложения. Наконец, мое приложение должно иметь возможность обнаруживать, когда NodeJS разбился и повторно запустить его или сообщить об ошибке с информацией.
Какой лучший способ приблизиться к этому? Существуют ли какие-либо библиотеки Java, чтобы помочь управлять дочерним процессом таким образом? Что-нибудь, что я должен делать со стороны NodeJS (я очень новичок в NodeJS, я никогда не использовал его раньше).