[英]WildFly RestEasy Version confusion
我想使用RestEasy构建REST API。 生成的文件应部署在WildFly应用程序服务器中。
我遇到以下SO问题中描述的问题: AsynchronousDispatcher错误
标记的解决方案告诉我,将依赖项设置为“提供”。 据我了解,这意味着该库未包含在我的战争文件中,而是直接从应用服务器中获取的...
这不就是错吗?
我的想法是建立一个自包含的war文件,其中包含我需要的版本中所有需要的库。
从应用服务器提供后,我确实从那里获得了当前可用的版本。 我不太了解版本...当有人想到更新服务器上的RestEasy库时,它可能会破坏我的应用程序。
我不确定我错过了什么还是做错了什么吗?
Java EE的一大优势是朝着API进行开发,而不必担心实现。 Java EE容器提供API以及API的实现。 如果包含实现依赖关系,则可能会发生以下两种情况之一。
您的依赖项将被忽略,使其毫无意义地将其包含在部署中。
您将在所包含的依赖项与服务器期望的依赖项之间发生冲突。 可能是这样的:
ClassCastException
因为它在类路径中找到两个相同的类。 MethodNotFoundException
因为版本不匹配 朝着API而非实现的方向发展还使您可以轻松地在符合Java EE的容器之间切换,而无需对部署进行最小的更改。 API通常是向后兼容的,因此版本升级也不是什么大问题。
如果要使用胖WAR(包括实现)而不是瘦WAR(不包括实现),则servlet容器可能是更好的解决方案。 WildFly确实只有一个servlet下载。 我鼓励您尽管信任容器对实现依赖做正确的事情:)。 通常,只有在升级Java EE版本时才出现升级问题。 即使那样,通常也很安全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.