我可以将Node.js应用程序打包为Java EAR

时间:2016-09-19 14:13:18

标签: java node.js ear java-server

让我们假设您的公司要求开发一个实时聊天应用程序,并希望它能在几小时内完成。由于你已经知道Node.js很容易实现它,所以你在Node.js中开发它,但是公司使用Java应用服务器(如WebSphere,JBoss或WebLogic)。

因此服务器管理员希望部署.EAR文件。

有没有办法提供运行Node.js应用程序的.EAR文件?

2 个答案:

答案 0 :(得分:1)

这是如此肮脏,以至于对释放的EAR的任何理智的检查都应该杀死你。那就是说,是的,它是可能的。你必须先了解一些事情。

  1. 是目标JVM足够专用于在执行权上运行进程或安全性足够松散,以使JVM能够使用它的API方法执行shell进程。 (我说的是Java安全性,而不是操作系统安全性)

  2. 您必须亲自了解耳塞所运行的操作系统类型。

  3. EAR / WAR必须"扩展"到操作系统已知的真实文件系统。

  4. 您必须知道ear容器具有足够权限执行OS命令的凭据。

  5. 一旦你确切地知道这四点,使用Process java API执行Node.js进程并不是一件大事,因为可执行文件(静态链接和OS兼容)可以方便地处于已知位置......

    即使Bruno Grieder说,共享端口是不可能的,因此您只需要将Web应用程序作为"真实"的正面代理。在Node.js上运行的应用程序,HTTP或HTTPS根本不相关,因为Web应用程序容器和Web应用程序本身之间的最终通信不再加密。

    awwww ......太可爱...... :)但是,你必须知道在公司环境中使用像这样的偷偷摸摸的方法,并不是一件好事。

答案 1 :(得分:0)

没有

您无法正确打包预先安装的" nodeJS在耳内。

NodeJS安装在Windows和Linux之间有所不同; EAR不会便携。

另一方面,如果服务器管理员了解到您打算在EAR内部打包不能在JVM上运行的可执行文件,我不想参与其中。

(注1:正如上面评论中提到的@mlan,在JVM和nodejs进程之间共享端口是不可能的 - 伪装它需要一个前端反向代理调度HTTP请求,假设所有流量都是HTTP)

(注意2:不要误解,你可以在EAR中放置任何内容,包括使用ProcessBuilder从Java触发的可执行文件,但这是最后的解决方法)