WildFly RestEasy版本混乱

时间:2016-08-15 11:28:00

标签: java jar war wildfly resteasy

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

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

标记的解决方案告诉我,将依赖项设置为"提供"。据我所知,这意味着该库不包含在我的war文件中,而是直接从app-server中获取...

难道不是吗?

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

当从app-server提供时,我从那里获得当前可用的版本。我对这个版本并不是很了解......当有人想要更新服务器上的RestEasy库时,它可能会破坏我的应用程序。

我不确定我是否遗漏了某些东西或做了一些完全错误的事情?

1 个答案:

答案 0 :(得分:1)

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

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

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

    • ClassCastException因为它在类路径上找到了两个相同的类。
    • MethodNotFoundException,因为版本不匹配
    • conflcts的其他各种问题
  3. 向API而不是实现开发还允许您轻松地在符合Java EE的容器之间切换,而不需要对部署进行最小的更改。 API通常是向后兼容的,因此版本升级不是一个大问题。

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