0

我曾担任过一些基于 OSGI 的 AEM 开发人员,这就是我的基本(而且有点过时)想法的来源。在一份新工作和完全与 AEM 无关的项目中,这是我需要做的。

  • 基于 JDK8 兼容的 3rd 方库构建服务库
  • 将它们部署为 tomcat 上的 spring web-app,在 JDK9 或更高版本上运行。

3rd 方库是许可软件,由于某些法律僵局而无法升级。由于 Java API 问题,在 JDK9 上直接部署失败。

理论是将整个 JDK8 运行时包含为捆绑依赖项,并将其作为 OSGI 捆绑包部署在兼容 JDK9+ 的 OSGI 运行时框架上。

这是我为捕捉主要思想而创建的一个小图表: 在此处输入图像描述

这可能有效吗?理论上这是成立的,因为每个 OSGI 包都使用自己的类加载器,因此第 3 方库不应该因为 Java API 问题而中断。此外,计划是使用 Maven 创建一个胖(超级)罐子。

另一个困扰我的问题:创建一个包含 JDK 的 uber-jar 甚至是一件事吗?我以前创建过 uber-jar,但不确定如何包含 JDK。其中的某些部分似乎不正确。有什么建议吗?

感谢大家!

4

1 回答 1

1

您不能从一个 JDK 实现中打包 JDK 类库并将它们用于另一个 JDK 实现。即使你把它们放在一个包里。JDK 类库与底层 JVM 实现密切相关,并且有许多预期的单例存在多个 JDK 类库会违反。

于 2020-01-23T21:42:51.217 回答