【问题标题】:Loading resteasy-spring module into WildFly ClassNotFoundException将 resteasy-spring 模块加载到 WildFly ClassNotFoundException
【发布时间】:2014-06-30 06:58:56
【问题描述】:

在设置了我在 WildFly 上部署的小型 JAX-RS 应用程序后,我正在尝试将 Spring 支持添加到 RestEasy。我想使用 WildFly 中包含的 resteasy-spring 模块。部署 WAR 时出现 ClassNotFoundException:

 Caused by: java.lang.ClassNotFoundException: org.jboss.resteasy.plugins.spring.SpringContextLoaderListener from [Module "deployment.mk-backend-8.0.0-SNAPSHOT.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) [jboss-modules.jar:1.3.0.Final]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final]
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.addListener(UndertowDeploymentInfoService.java:1145)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.createServletConfig(UndertowDeploymentInfoService.java:734)
... 6 more

我将该模块包含在我的清单文件中,如下所示:

Manifest-Version: 1.0
Dependencies: org.jboss.resteasy.resteasy-spring export

在我的 web.xml 中,我包含了 SpringContextLoaderListener

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.spring.SpringContextLoaderListener
    </listener-class>
</listener>

我对 WildFly 完全陌生。我浏览了很多文档,但找不到任何对我有帮助的东西.. 我做错了什么?

【问题讨论】:

    标签: java resteasy wildfly


    【解决方案1】:

    我正在处理一个非常相似的问题...如果你没有在 WEB-INF/lib 中包含依赖项,你可以强制 Wildfly 从服务器类路径加载这个依赖项,或者如果它与特定的 lib 冲突,甚至排除它您在项目中使用的版本。 您所要做的就是创建以下 XML 文件并将其保存在 WEB-INF/jboss-deployment-structure.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
        <deployment>
        <exclusions>
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
        </exclusions>
        <dependencies>
            <module name="org.jboss.resteasy.resteasy-jackson-provider" services="import" />
            <module name="org.apache.httpcomponents" services="import"/>
            <module name="org.apache.commons.io" services="import"/>
        </dependencies>
    </deployment>
    </jboss-deployment-structure>
    

    **您应该注意到节点&lt;exclusion&gt;&lt;dependencies&gt; 内的标记只是示例代码,您应该将其替换为您自己需要的配置。

    也许您项目中缺少的依赖项在 WildFly 库上被标记为私有。打开目录%JBOSS_HOME%/modules/system/layers/base/org/jboss/resteasy 并检查该库是否存在或该库的module.xml 是否包含以下标记

    <properties>
        <property name="jboss.api" value="private"/>
    </properties>
    

    如果 WildFly 依赖项是私有的,您应该将它显式包含在上面显示的 XML (jboss-deployment-structure.xml) 中。否则,您只需要使用它,无需在您的 WEB-INF/lib 或 manifest.mf 文件中包含该库。但是,如果 WildFly 上没有该依赖项,我建议您将其包含在您的 WEB-INF/lib 中。

    欲了解更多信息,请查看ClassNotFoundException for ObjectMapper on WildFly 8.1

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 2016-01-12
      • 2015-07-31
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多