【问题标题】:WildFly RestEasy Version confusionWildFly RestEasy 版本混乱
【发布时间】:2016-08-15 11:28:00
【问题描述】:

我想使用 RestEasy 构建一个 REST API。生成的文件应该部署在 WildFly 应用服务器中。

我面临以下 SO 问题中描述的问题: AsynchronousDispatcher error

标记的解决方案告诉我,将依赖项设置为“提供”。据我了解,这意味着该库不包含在我的战争文件中,而是直接从应用服务器获取...

这不是错了吗?

我的想法是构建一个自包含的 war 文件,其中包含我需要的版本中所有需要的库。

当从应用服务器提供时,我确实从那里获得了当前可用的版本。我对版本一无所知...当有人想更新服务器上的 RestEasy 库时,它可能会破坏我的应用程序。

我不确定我是错过了什么还是做错了什么?

【问题讨论】:

    标签: java jar war wildfly resteasy


    【解决方案1】:

    Java EE 的一大优势是面向 API 开发,而不必担心实现。 Java EE 容器提供 API 和 API 的实现。如果您包含实现依赖项,则可能会发生以下两种情况之一。

    1. 您的依赖项将被忽略,因此将它们包含在您的部署中毫无意义。

    2. 您将在包含的依赖项与服务器期望的依赖项之间发生冲突。这可能是这样的:

      • ClassCastException 因为它在类路径上找到两个相同的类。
      • MethodNotFoundException 因为版本不匹配
      • 其他各种冲突问题

    开发 API 而不是实现还允许您轻松地在 Java EE 兼容容器之间切换,而无需对您的部署进​​行任何更改。 API 通常是向后兼容的,而且版本升级也不是什么大问题。

    如果您想使用胖 WAR(包括实现)而不是瘦 WAR(不包括实现),那么 servlet 容器可能是更好的解决方案。 WildFly 确实有 servlet only 下载。我鼓励你相信容器对实现依赖做正确的事情:)。通常,只有在升级 Java EE 版本时才会出现升级问题。即使这样,它通常也很安全。

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 2021-10-30
      相关资源
      最近更新 更多