代码之家  ›  专栏  ›  技术社区  ›  ramazan polat

我可以打包一个节点吗。js应用程序作为Java EAR

  •  2
  • ramazan polat  · 技术社区  · 8 年前

    让我们想象一下,您的公司要求开发一个实时聊天应用程序,并希望在数小时内完成。因为您已经知道使用Node非常简单。js,您是在Node中开发的。js,但该公司使用Java应用程序服务器(如WebSphere、JBoss或WebLogic)。

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

    是否有任何方法可以提供运行节点的.EAR文件。js应用落后?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Alex    8 年前

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

    2. 您必须确切地知道耳朵容器运行在哪种类型的操作系统上。

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

    4. 您必须知道ear容器使用的凭据是否有足够的权限来执行操作系统命令。

    一旦您确切地知道了这四点,使用ProcessjavaAPI执行节点就没什么大不了的了。js进程,可执行文件(静态链接和操作系统兼容)可以方便地到达已知位置。。。

    正如Bruno Grieder所说,共享端口是不可能的,因此您只需要让web应用程序充当在Node上运行的“真实”应用程序的前端代理。js、HTTP或HTTPS根本不相关,因为web应用程序容器和web应用程序本身之间的最终通信不再加密。

    哇……太可爱了……:)但是,你必须知道在公司环境中使用这种鬼鬼祟祟的方法不是一件好事。

        2
  •  0
  •   Bruno Grieder    8 年前

    您无法在ear中正确打包“预安装”的nodeJS。

    Windows和Linux的NodeJS安装不同;EAR将不可移植。

    (注1:正如@mlan在上面的评论中所指出的,JVM和nodejs进程之间不可能共享端口-如果所有流量都是HTTP,则需要前置反向代理来发送HTTP请求)

    (注2:别误会,你可以把任何东西放在EAR中,包括你用Java触发的可执行文件 ProcessBuilder 例如,但这是最后的解决办法)