2013-02-13 59 views
0

我使用Jboss 7.1.1Resteasy 3.0-beta-3設置OAuth 2.0服務器。 我跟着官方documentation,我最終設法建立了一個簡單的應用程序,使用DatabaseServerLoginModule對用戶進行身份驗證。當WAR位於EAR中時,OAuth 2.0和Resteasy:ClassNotFoundException

當我把戰爭放在耳邊時,問題就出現了。當我重新部署應用程序時,發現此錯誤:

13:32:58,336 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.subunit."JauBM-EAR.ear"."JauBM-WEB.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."JauBM-EAR.ear"."JauBM-WEB.war".INSTALL: Failed to process phase INSTALL of subdeployment "JauBM-WEB.war" of deployment "JauBM-EAR.ear" 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_03] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_03] 
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_03] 
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS018096: Error instantiating container component: org.jboss.resteasy.skeleton.key.as7.OAuthAuthenticationServerValve 
    at org.jboss.as.web.deployment.WarDeploymentProcessor.getInstance(WarDeploymentProcessor.java:386) 
    at org.jboss.as.web.deployment.WarDeploymentProcessor.processDeployment(WarDeploymentProcessor.java:210) 
    at org.jboss.as.web.deployment.WarDeploymentProcessor.deploy(WarDeploymentProcessor.java:114) 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    ... 5 more 
Caused by: java.lang.ClassNotFoundException: org.jboss.resteasy.skeleton.key.as7.OAuthAuthenticationServerValve from [Module "deployment.JauBM-EAR.ear.JauBM-WEB.war:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) 
    at org.jboss.as.web.deployment.WarDeploymentProcessor.getInstance(WarDeploymentProcessor.java:378) 
    ... 8 more 

我錯過了什麼嗎?

回答

3

我想出了什麼問題,所以我決定回答這個問題,以防有人遇到同樣的問題。 解決的辦法是在文件jboss-deployment-structure.xml移動在EAR文件,並且根據該更改:

JauBM-Oauth/WebContent/WEB-INF/jboss-deployment-structure.xml(刪除)

<jboss-deployment-structure> 
    <deployment> 
     <dependencies> 
      <module name="org.jboss.resteasy.resteasy-jaxrs" services="import"/> 
      <module name="org.jboss.resteasy.resteasy-jackson-provider" services="import"/> 
      <module name="org.jboss.resteasy.skeleton-key"/> 
     </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

EAR/META-INF/jboss-deployment-structure.xml(創建)

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <sub-deployment name="JauBM-Oauth.war"> 
     <dependencies> 
      <module name="org.jboss.resteasy.resteasy-jaxrs" services="import" 
       export="true" /> 
      <module name="org.jboss.resteasy.resteasy-jackson-provider" 
       services="import" export="true" /> 
      <module name="org.jboss.resteasy.skeleton-key" export="true" /> 
     </dependencies> 
    </sub-deployment> 
</jboss-deployment-structure>