我习惯于部署Tomcat服务器(以及其他J2EE容器),并且他们有一个可以删除WAR文件的目录。假设有一个名为xyz.war
的文件,那么当我访问对于以/xyz
开头的任何路径对该服务器进行GET时,请求将被传递给该war文件中的应用程序。
现在我想在node.js下做类似的事情。我有几个应用程序,我希望它们在不同的命名空间中运行(从JavaScript和URL的角度来看)。这甚至可能吗?
答案 0 :(得分:1)
在java世界中,因为jvm相当重量级,我们倾向于在同一个jvm进程中部署多个应用程序。 Node.js更轻量级,允许在单独的进程中运行每个节点应用程序。我认为这有几个优点,例如每个进程隔离(例如,如果有错误的应用程序占用了所有堆),并且能够重新启动节点应用程序而不影响在同一服务器上运行的其他应用程序。
要让它们在相同的端口上运行,您可以将nginx或node-http-proxy之类的东西放在它们前面。如果您需要检测并自动启动新应用程序,您可以编写一个监视“app目录”的脚本并为nginx生成一些新配置(例如,检测新目录'xyz',将其映射到nginx中的/ xyz并启动该目录中的节点应用程序。)
答案 1 :(得分:0)
这可能但不容易。你必须建立自己的框架才能做到这一点。 J2EE容器提供的一个功能是使用单独的类加载器进行隔离。这种孤立将难以建立。但是,如果忽略隔离安全性,那么创建某种插件体系结构(其中node.js在不同目录中读取文件)应该不会太困难。