【问题标题】:Deploy a WAR in Websphere ignoring all JEE libraries在 Websphere 中部署 WAR,忽略所有 JEE 库
【发布时间】:2018-07-19 15:46:58
【问题描述】:

我有一个使用Java 8 + Spring Boot + Spring 5的应用程序,我在War中打包了这个应用程序,我可以在Tomcat 8.5+中成功实现。

显然,当我将相同的 WAR 放入 WAS 时,它会失败。这会继承 JEE 上下文并且库会发生冲突。

我可以添加某种描述符以在我的 WAR 中忽略 JEE 的功能吗?我想像使用 Tomcat 一样使用 WebSphere。

【问题讨论】:

  • 不知道您使用的是哪个版本,但您使用 WebSphere Liberty 的机会要大得多,而不是传统的。
  • 我必须使用 WAS 8.5.5.13。
  • 一般来说,没有办法在你的战争中禁用 JEE 功能。您将不得不摆脱所有不必要的 Java EE jar,因为 WAS 已经有了它们,不像 Tomcat,它只是一个非常简单的 Web 容器。

标签: java spring-boot websphere websphere-8


【解决方案1】:

最后,我可以在 WAS 中成功运行我的 WAR。我不得不将 Spring Boot 版本降级到 1.5.x,因为 Spring 5 不抱怨 JEE 6。

【讨论】:

  • 你是从哪个版本的 Spring Boot 降级的? Spring Boot 2.x 包括反应式 Java。 Spring Boot 1.5.x 没有。这可能是原因。
  • WAS 8.5.5.x 可以运行 JDK 1.8、JDK 1.7(生命周期结束 201907)和 JDK 1.6(生命周期结束 201804,因此已弃用)。因此,在这个特定的 WebSphere 应用服务器中切换 java - 可以为每个应用服务器单独设置。
  • 我将 WAS 与 JDK 1.8 和父级最后一个类加载器策略一起使用。结果是一样的。我必须降级到 Spring 4。
  • 这是因为 WAS 8.5 实现了 JEE6 而不是 JEE7。不是JDK本身的问题。
【解决方案2】:

请检查 WebSphere 的类加载器配置。也许你可以让它更早地加载你的库。

https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/crun_classload.html

【讨论】:

    猜你喜欢
    • 2016-10-30
    • 2011-10-03
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2020-08-09
    相关资源
    最近更新 更多