Tomcat和OSGi

14 java tomcat osgi hotdeploy apache-karaf

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

所以:

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

提前致谢!

Mil*_*kov 6

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

是.事实上,如果您下载Karaf并查看,<KARAF_HOME>/demos/web您将找到一个完全相同的演示项目.

在Tomcat中嵌入OSGi的系统服务/端口是什么?

这取决于您在其中安装的内容以及如何配置它.这里有点陈旧(但恕我直言,相关)关于默认端口以及如何配置它们的讨论.


6to*_*ton 1

我们以同样的方式部署我们的应用程序。我们使用 Serlt 桥在 tomcat 和 weblogic 上部署了 karaf。使用容器的原因是为了克服环境限制,其中一些客户是“oracle”或“ibm”商店,并希望所有部署都在这些服务器上完成。

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

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