Web应用程序模块的热插拔

时间:2014-03-12 23:02:41

标签: java java-ee glassfish osgi hotdeploy

我有一个在servlet容器(Tomcat)中运行的Web应用程序。我的计划是使用热插拔,以便在正在运行的Web应用程序中添加和删除其他模块。 这些附加模块只包含一些业务逻辑,但不包含任何与Web相关的内容,如servlet,JSP页面或HTML文件。

这样做的最佳方式是什么?

为了使用OSGi,我考虑过从Tomcat切换到Glassfish。 我还想过将Apache Felix与Tomcat一起使用。

有哪些替代方案?

1 个答案:

答案 0 :(得分:2)

如果您想创建一个可以在不停机的情况下快速更新的模块化应用程序,OSGi绝对是正确的技术。

您有几个选择:

  1. 您可以从像Apache Felix这样的OSGi容器开始,并将捆绑包部署到您的应用程序和Web服务器的容器中(大多数都基于Jetty)。这样,一切都是捆绑,如果需要可以更新。如果您从头开始并且对必须使用的现有servlet容器没有约束,那么这就是您的选择。

  2. 如果必须继续使用现有的servlet容器,可以部署嵌入OSGi容器的WAR,OSGi容器将加载构成应用程序的所有bundle。在这种情况下,您可以部署一个特殊的桥接器#34;将使用" host"注册Servlet和过滤器的bundle servlet容器。

  3. 从Glassfish开始有点像第一个选项,因为Glassfish本身是基于Felix构建的。你会得到很多额外的"捆绑包预先安装在您的应用程序中。如果你仍然使用80%,那可能是值得的。如果您在应用程序中几乎不使用任何Glassfish(JavaEE)功能,那么最好只从Felix开始并在那里选择组件。