Tomcat 和 OSGi

2022-09-04 04:26:10

我想知道是否有可能将像Karaf这样的OSGi容器嵌入到Tomcat实例中。根据这个SO问题和其他一些问题,这似乎是可能的,但我似乎找不到任何关于如何做到这一点或需要注意的陷阱/警告的可靠细节。

所以:

  1. 是否可以在 Tomcat 中嵌入 OSGi 容器,以便我可以随时将 OSGi 捆绑包热部署到此容器,而无需重新启动 Tomcat?
  2. 如果上面#1的答案是“是”,那么在Tomcat中嵌入OSGi会暴露哪些系统服务/端口?我问是因为我想在我没有管理员权限的Java PaaS上托管的Tomcat服务器中部署OSGi。我想知道当我尝试将嵌入式OSGi容器部署到Tomcat时,它是否会尝试开始侦听端口,或者开始对本地文件系统执行某些操作。如果是这种情况,我可能会收到安全/权限错误。

提前致谢!


答案 1

是否可以在Tomcat中嵌入OSGi容器?

是的。事实上,如果你下载Karaf并查看,你会发现一个演示项目正是这样做的。<KARAF_HOME>/demos/web

在Tomcat中嵌入OSGi会公开哪些系统服务/端口?

这取决于您在其中安装的内容以及配置方式。这里有一些关于默认端口以及如何配置它们的旧(但恕我直言)讨论。


答案 2

我们以相同的方式部署应用程序。我们已经在tomcat和weblogic中使用servelt桥部署了karaf。使用容器的原因是为了克服环境约束,其中一些客户是“预言机”或“ibm”商店,并希望在这些服务器上完成所有部署。

由于您将使用 servlet 网桥,因此不需要打开新端口来列出 http 流量。如果 karaf 控制台被阻止,则可能会遇到该端口的问题。另外,我记得由于嵌入式码头实例在另一个端口上启动,因此在运行cxf时遇到了问题。

除了端口之外,您还需要一个具有写入访问权限的 karaf 主目录。


推荐