2014-05-12 74 views
1

建立我部署在WildFly我試圖Spring支持添加到RestEasy的小JAX-RS應用程序之後。我想使用包含在WildFly中的resteasy-spring模塊。當部署WAR我得到一個ClassNotFoundException:加載RestEasy的彈簧模塊插入WildFly 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。我經歷了很多文件,但去了我找不到任何可以幫助我.. 我在做什麼錯?

回答

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庫。打開目錄%JBOSS_HOME%/modules/system/layers/base/org/jboss/resteasy並檢查是否存在LIB或者如果LIB的module.xml包含以下標記

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

如果WildFly依賴是私有的,你應該明確地包括它上面顯示的XML(jboss-部署-structure.xml)。否則,你只需要使用它,不需要在你的WEB-INF/lib和manifest.mf文件中包含這個庫。但是,如果WildFly上不存在依賴項,我建議您將它包含在WEB-INF/lib中。

欲瞭解更多信息,請檢查ClassNotFoundException for ObjectMapper on WildFly 8.1