【问题标题】:Include entire JDK8 in a OSGI bundle and deploy on OSGI running on JDK 9 (or higher) environment将整个 JDK8 包含在 OSGI 包中并部署在运行在 JDK 9(或更高版本)环境中的 OSGI
【发布时间】:2020-05-10 01:27:27
【问题描述】:

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

  • 基于符合以下要求的第 3 方库构建服务库 JDK8
  • 将它们部署为 tomcat 上的 spring web-app,在 JDK9 或更高版本上运行。

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

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

这是我为捕捉主要思想而创建的一个小图表:

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

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

谢谢大家!

【问题讨论】:

    标签: osgi osgi-bundle uberjar fatjar


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 2015-02-15
      • 2012-03-27
      • 2012-06-12
      • 1970-01-01
      相关资源
      最近更新 更多