14

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

所以:

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

提前致谢!

4

2 回答 2

5

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

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

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

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

于 2016-12-01T21:56:11.410 回答
1

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

由于您将使用 servlet 桥接器,因此无需打开新端口即可列出 http 流量。如果该端口被阻止,您可能会遇到与 karaf 控制台有关的问题。我还记得由于嵌入式码头实例在另一个端口上启动而导致运行 cxf 时遇到问题。

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

于 2014-02-03T11:14:32.683 回答