将整个JDK8包含在OSGI捆绑包中,并部署在JDK 9(或更高版本)环境中运行的OSGI上

问题描述 投票:0回答:1

我曾经作为一名基于OSGI的AEM开发人员工作,这是我的基本(有点过时)想法的源头。在一项新的工作以及与AEM完全无关的项目上,这是我需要做的。

  • 基于基于以下要求的第三方库构建服务库JDK8
  • 将它们作为在tomcat上运行的春季Web应用程序部署,在JDK9或更高版本上运行。

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

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

这是我创建的一个小图,用于捕获主要思想:enter image description here

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

另一个困扰我的问题:创建一个包括JDK的超级jar还是一件事情吗?我之前已经创建了uber-jars,但不确定如何将JDK也包括在内。其中的某些部分似乎不正确。有什么建议吗?

谢谢大家!

osgi osgi-bundle uberjar fatjar
1个回答
0
投票

您不能从一个JDK实现中打包JDK类库,而在另一个JDK实现中使用它们。即使将它们捆绑在一起。 JDK类库与底层JVM实现紧密相连,并且存在许多预期的单例,这些单例存在多个JDK类库会违反。

© www.soinside.com 2019 - 2024. All rights reserved.