Lib*_*nek 7 tomcat osgi servlets equinox
我需要在servlet中重用最初为Eclipse RCP应用程序开发的代码(即盒装为Eclipse插件/ OSGi包).
在阅读了很多博客文章,文章,维基等之后,我最终知道了这一点:
Equinox建议第二种选择更容易.但对于生产他们建议1.我不确定为什么.在哪种情况下真的更好,为什么?
我是一个经验丰富的Tomcat用户,会将Tomcat嵌入Equinox变更管理吗?或者换句话说,嵌入在Equinox中的Tomcat会有什么不同?
首先,除了清单之外,代码是否还有任何OSGi/Equinox依赖项?如果不是它应该在普通的Tomcat中工作得很好.
我的理解是在Tomino中嵌入Tomcat会改变对它的管理.您的文件夹布局(包括server.xml和catalina.sh)将消失.相反,您可能会通过配置管理员管理Equinox应用程序.
其次,OSGi有两个servlet编程和部署模型.第一个是HttpService,您可以在其中以编程方式注册您的servlet和资源(您也可以通过扩展点执行此操作).在这种情况下,您的应用程序只是一个包的集合.但是,您无法使用过滤器.第二个是Web应用程序包(WAB),它是OSGified WAR.
小智 5
我们一直在进行相当复杂的Web应用程序的迁移,该应用程序使用来自非OSGi的Jetty到Equinox上的OSGi.我已经了解了一些肯定会以某种方式推动您的决定的事情: - 如果您选择使用OSGi作为运行应用程序的框架,例如选项#2,那么您的应用程序消耗的所有内容都必须是OSGi捆绑包.商业图书馆的任何外部或第三方.如果你使用大量的开源,很容易找到捆绑包.或者,如果您找不到捆绑包,您可以使用BNDTools自行捆绑它们.仍然这种方法可能耗费时间来找出所有适当的依赖关系,并且可能的类加载器问题需要围绕OSGi进行攻击 - 将OSGi嵌入到Tomcat中的方法,这似乎表面上更安全,更容易.虽然我不确定在这种情况下你会从WAB获益.
BTW WAB的一个有趣的好处是,您可以轻松地在WebApp之间共享代码,因为它们被部署为捆绑包,您可以简单地在它们之间导出/导入包.今天非OSGi部署无法实现的功能.