Возможно ли (... прекрасно понимая, что это безумие и серьезно опрометчиво ...) иметь приложение J2EE, работающее на сервере приложений Java (в настоящее время использующее weblogic), и запускать собственный исполняемый процесс, используется и остановлен как часть жизненного цикла этого Java-приложения?(Примечание: это , а не JNI, на самом деле это отдельный нативный процесс. Это unix / linux, но также должен запускаться в Windows.) Я не нашел никаких документов по этой теме - и по уважительной причине, вероятно.
Предыстория: На самом деле нативный процесс - это некий монолитный сторонний программный пакет, который не может быть взломан, и нет никакого другого API, кроме stdin / stdout.Java-приложение требует собственного приложения для выполнения определенных услуг.Я могу легко обернуть собственный процесс через ProcessBuilder и запустить / остановить и общаться с ним (используя stdin / stdout).Для целей тестирования у меня есть простой exe (C ++), который общается через stdin / stdout и может получать «start», «shutdown» и выполняет простой «echo» сервис.(«Start» не работает, но просто возвращает «ok», если собственный процесс успешно запущен.)
Таким образом, в идеале, когда сервер приложений запускается / выключается и / или развернутая Javaприложение запускается / выключается, связанный с ним собственный процесс также может быть запущен / выключен.И в идеале это может происходить чисто и надежно (никаких затяжных процессов после выключения, все сбои запуска регистрируются, проблемы с синхронизацией жизненного цикла синхронизируются).
Если это действительно сработало, тогда «часть 2» вопроса будетэто может на самом деле работать в среде кластера / отработки отказа.Собственный процесс может быть привязан к платформе и специализированной службе мониторинга и управления, но я бы хотел, чтобы все связывалось и управлялось с приложением Java, если это возможно.
Если Glassfish или любой другой тип OSGiокружающая среда сделает это проще, пожалуйста, не стесняйтесь, дайте мне знать (это может быть может вариант ... Я бы предпочел Glassfish, но WLS - это общий мандат.)
I 'Я пытаюсь собрать доказательство концепции, но любой четкий ответ «да, я сделал это» или «нет, это не сработает» будет высоко ценится и очень сэкономит время (с поддержкой ссылок на документы, если они у вас есть).
Редактировать: просто чтобы уточнить (тема может вводить в заблуждение): также запущено значительное Java-приложение (которое я написал и могу свободно изменять по мере необходимости);сторонний собственный процесс просто выполняет сервис, который требуется приложению Java.Я не просто пытаюсь управлять собственным процессом через сервер приложений.