繁体   English   中英

WildFly RestEasy版本混乱

[英]WildFly RestEasy Version confusion

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

我遇到以下SO问题中描述的问题: AsynchronousDispatcher错误

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

这不就是错吗?

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

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

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

Java EE的一大优势是朝着API进行开发,而不必担心实现。 Java EE容器提供API以及API的实现。 如果包含实现依赖关系,则可能会发生以下两种情况之一。

  1. 您的依赖项将被忽略,使其毫无意义地将其包含在部署中。

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

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

朝着API而非实现的方向发展还使您可以轻松地在符合Java EE的容器之间切换,而无需对部署进行最小的更改。 API通常是向后兼容的,因此版本升级也不是什么大问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM