2014-03-12 39 views
1

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

这样做的最好方法是什么?

我想到了从Tomcat切换到Glassfish以便使用OSGi。 我也考虑过使用Apache Felix和Tomcat。

有什么替代方案?

回答

2

如果您希望创建一个模块化应用程序,并且无需停机即可快速更新,OSGi绝对是正确的技术。

你有两个选择:

  1. 你可以像Apache费利克斯OSGi容器启动和部署包到您的应用程序和Web服务器都该容器(其中大部分是基于码头)。这样,所有东西都是一捆,如果需要可以更新。如果您从头开始,并且对您必须使用的现有servlet容器没有限制,那么这就是要走的路。

  2. 如果您必须继续使用现有的servlet容器,则可以部署一个嵌入OSGi容器的WAR,并且OSGi容器将加载组成应用程序的所有包。在这种情况下,您可以部署一个特殊的“桥”捆绑包,它将使用“主机”servlet容器注册Servlet和过滤器。

从Glassfish开始有点像第一个选项,因为Glassfish本身就建立在Felix上。您只需在应用程序中预安装大量“额外”软件包。无论如何,如果你使用了80%,那可能是值得的。如果您在应用程序中很少使用Glassfish(JavaEE)功能,那么最好从Felix开始,然后在那里选择组件。