如何将 EAR 应用程序转换为一个大型 OSGI 包并将其部署在 Equinox 容器中?

How to convert EAR application into one large OSGI bundle and deploy it in Equinox container?

作为削减成本的一部分,管理层希望停止在开发人员系统中使用 websphere 应用程序服务器。

我的任务是将 EAR 文件转换为一个胖 OSGI 包并将其部署到 equinox 容器中。如果成功,此设置将在开发人员之间共享,并且只会在开发人员机器上使用,而不会在更高的环境中使用。

我搜索了很多网站,但没有找到任何具体的解决方案。 如果有解决问题的想法,请分享。

强烈建议您查看 Open Liberty:https://openliberty.io

Open Liberty是IBM去年在Java一号推出的一个开源项目。该项目的目标很简单:将出色的 Java EE 技术交到开发人员手中。

Open Liberty 支持 Java EE 7 和 MicroProfile 以及其他技术。

除非您有充分的技术理由将 EAR 转换为 OSGi 包,否则您可以在您的开发环境中使用 Open Liberty。安装很简单:

unzip openliberty-18.0.0.1.zip

试一试。我想你会惊喜的。

如果您有任何疑问,Open Liberty 有一个非常活跃的社区和推特,或者在推特上联系我@barecode。

EAR 文件只是一个包含嵌套 JAR 文件的 JAR 文件。这些嵌套的 JAR 构成了应用程序的类路径。

转换为 OSGi 包应该像为包含 header Bundle-ClassPath header 的 top-level JAR 编写 META-INF/MANIFEST.MF 一样简单,其中列出了包含 JAR,例如:

Bundle-ClassPath: a.jar, b.jar, c.jar, ...

如果 EAR 文件还直接包含作为应用程序类路径一部分的 类,则新包的 JAR 文件应作为名为“.”的条目添加到 Bundle-ClassPath 之前。 (点),例如:

Bundle-ClassPath: ., a.jar, b.jar, c.jar, ...

请注意,清单还需要包含强制性 OSGi header、Bundle-Manifest: 2Bundle-SymbolicName: ...。网上有很多关于此的信息。