在设置我在WildFly上部署的小型JAX-RS应用程序之后,我正在尝试向RestEasy添加Spring支持。我想使用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文件中,如下所示:
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完全不熟悉。我经历了很多文档,但是找不到任何可以帮助我的东西...... 我做错了什么?
答案 0 :(得分: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>
**您应该注意到节点<exclusion>
和<dependencies>
内的标记只是示例代码,您应该用自己需要的配置替换它。
在WildFly lib上,可能缺少对项目的依赖项被标记为私有。打开目录%JBOSS_HOME%/modules/system/layers/base/org/jboss/resteasy
并检查lib是否存在,或者该lib的module.xml是否包含以下标记
<properties>
<property name="jboss.api" value="private"/>
</properties>
如果WildFly依赖项是私有的,则应将其显式包含在上面显示的XML中(jboss-deployment-structure.xml)。否则,你只需要使用它,就不需要在你的WEB-INF / lib和manifest.mf文件中包含lib。但是,如果WildFly上没有依赖项,我建议您将它包含在WEB-INF / lib中。
有关详情,请查看ClassNotFoundException for ObjectMapper on WildFly 8.1