2011-07-22 66 views
0

我习惯于部署Tomcat服务器(以及其他J2EE容器),并且他们有一个可放置WAR文件的目录。假设有一个名为xyz.war的文件,那么当我访问该服务器时,对于以/xyz开头的任何路径执行GET,请求将传递到该war文件中的应用程序。来自同一服务器的多个应用程序

现在我想在node.js下做类似的事情。我有几个应用程序,我希望它们在不同的命名空间中运行(从JavaScript和URL的角度来看)。这甚至有可能吗?

回答

0

这可能但并不容易。你将不得不建立自己的框架来做到这一点。 J2EE容器提供的一件事是使用单独的类加载器进行隔离。这种孤立将很难建立。但是如果您忽略隔离安全性,创建某种插件体系结构,其中node.js在不同目录中读取文件应该不会太困难。

+0

Grrr,我很害怕这个。让我[重述](http://stackoverflow.com/questions/6793733/how-do-i-support-multiple-versions-in-node-js)。 – Malvolio

1

在java世界中,因为jvm相当重量级,我们倾向于在同一个jvm进程中部署多个应用程序。 Node.js更轻巧,可以在单独的进程中运行每个节点应用程序。我认为每个进程隔离有多个优点(例如,如果一个错误的应用程序会占用所有的堆)以及重新启动节点应用程序的能力,而不会影响运行在同一台服务器上的其他应用程序。

为了让它们运行在相同的端口上,可以在它们前面放置类似nginx或node-http-proxy的东西。如果您需要自动检测并启动新应用程序,您可以编写一个脚本来监控您的“应用程序目录”并为nginx生成一些新配置(例如,检测新目录'xyz',将其映射到nginx中的/ xyz下并启动该目录中的节点应用程序)。

相关问题