我有一个以嵌入式模式运行 Apache Felix OSGi 的 struts2 应用程序。是否可以将主 webapp 中的 jar 文件公开给 OSGi 包?否则,我将不得不部署相同的 jar 文件两次,包括在主应用程序的 webapp 类路径中,并再次作为捆绑包部署在嵌入式 Felix OSGi 容器中。
问问题
202 次
1 回答
2
是的。你当然可以做到这一点。但是,在 webapp 中嵌入 OSGi 容器存在一些已知问题。这是因为 webapp 的类加载器上下文是非标准的。我一直在使用一个做同样事情的应用程序。如果我能够从头开始编写应用程序,我不会这样做。相反,我会将 Struts2 部署为 OSGi 包本身,以及其他所有内容。换句话说,我会完全接受 OSGi 模块化运行时。
话虽如此,OSGi 容器本身就是一个包,可以像任何包一样导出包。它被称为“系统包”,您可以将“主机”应用程序的类加载器中的包指定为要通过系统包导出到 OSGi 容器的包。
请参阅此页面上的示例,并搜索此配置参数。
Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA
此配置参数包含主机应用程序的类加载器中的包列表,这些包应该可用于您的 osgi 包。
至于“问题”,请参阅这些链接作为开始:
于 2012-12-19T19:45:30.860 回答