2016-09-19 1 views
0

Представим себе, что ваша компания попросила разработать приложение чата в режиме реального времени и потребовала его завершения в часах. Поскольку вы уже знаете, что с Node.js это просто суперпользователь, вы разработали его в Node.js, но компания использует серверы приложений Java (например, WebSphere, JBoss или WebLogic).Могу ли я упаковать приложение Node.js в качестве Java EAR

Таким образом администратор сервера ожидает, что файлы .EAR будут развернуты.

Есть ли способ предоставить файл .EAR, который запускает приложение Node.js?

+0

«запускает приложение Node.js позади». Что это значит?В этом окне также работает настоящий сервер узлов? Кто обслуживает входящие запросы? Сервер приложений? Я хочу сказать немного, как бы это ни случилось? – rmlan

+0

Я бы посоветовал найти один из нескольких примеров чата в реальном времени для библиотек Java websocket и адаптировать реализацию к вашим потребностям. – rmlan

+0

Это не настоящий сценарий. Я просто хотел узнать, как-то мы сможем это сделать. –

ответ

1

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

  1. является целевой JVM достаточно льготной для запуска процессов или безопасности на выполнение право sufficently Лакса для того, чтобы JVM выполнить процесс оболочки, используя его методы API. (я говорю о безопасности Java, а не о безопасности ОС)

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

  3. EAR/WAR должен быть «расширен» до реальной файловой системы, известной ОС.

  4. вы должны знать, имеют ли учетные данные, по которым ушной контейнер обладает достаточными полномочиями для выполнения команды ОС.

как только вы знаете, именно те четыре очка, это не Biggie использовать процесс Java API для выполнения процесса Node.js, что исполняемый (статически скомпонованный и совместимой ОС) удобно в известном положении .. .

, так как Бруно Гридер сказал, что общий доступ к порту невозможен, поэтому у вас будет просто веб-приложение, действующее как прокси-сервер для «реального» приложения, работающего на Node.js, HTTP или HTTPS, не относящихся к все как окончательная связь между контейнером веб-приложения и самим веб-приложением больше не зашифровываются.

awwww ... так мило ... :) но, вы должны знать, что использование скрытого метода, подобного этому в среде компании, не очень хорошо.

+0

Как я уже говорил, это не сценарий реального мира. Я просто хочу знать, есть ли способ сделать это. Если это так, то разработчики могут создать контейнер для приложений, написанных на nodejs и сервере, как java-приложение. BTW, можете ли вы сделать какой-либо рабочий пример для этого? –

+0

Нет, у меня нет на это времени, я подумал, что проблема была интересной, реализация такого решения зависит от вас. В любом случае, я ничего не имею против руководящих принципов компании, они, как правило, являются разумно определенными, чтобы избежать нехватки ресурсов персонала производства по сравнению с возможной производственной проблемой, связанной с программным решением. реальная проблема заключается в вашей иерархии, которая не оценивает стоимость или просто хочет «сделать это сейчас». – Alex

+0

Как я уже говорил, это не настоящий сценарий. Никто не просил меня делать чат-приложение, и, конечно, никто не должен скрывать приложение nodejs в ухе java, включая меня. И я также не работаю программистом, я - администратор базы данных, интересующийся node.js. Но если каким-то образом, если это будет возможно, это будет мостом между java и nodejs, который может изменить много вещей imho. –

0

No.

Вы не можете правильно упаковать А «предварительно установленные» nodeJS внутри уха.

Установка NodeJS отличается от Windows и Linux; EAR не будет переносимым.

На стороне примечания, я не хотел бы быть на вашей стороне, если администраторы сервера узнают, что вы упаковываете исполняемые файлы, которые не должны запускаться на JVM, внутри EAR.

(примечание1). Как отмечено в комментариях, приведенных в @mlan, невозможно было бы совместно использовать порты между процессом JVM и nodejs - для подделки ему потребовался бы обратный прокси-сервер, отправляющий HTTP-запросы, при условии, что весь трафик HTTP)

(Примечание2: не ставьте меня неправильно, вы можете положить что-нибудь в EAR, в том числе исполняемых файлов, которые вы вызываете из Java с помощью ProcessBuilder например, но в крайнем случае обходного)

Смежные вопросы