2013-02-22 1 views
4

Je migre un projet de jBoss-eap-5.1 vers jboss-eap-6.0. J'ai défini des pots en jersey dans le répertoire des modules de jboss comme suit:ClassNotFoundException sur com.sun.jersey.spi.container.servlet.ServletContainer

com 
|_jersey 
    |_jersey-core 
    |_jersey-client 
    |_jersey-server 
    |_jersey-servlet 

Dans mon fichier .pom de projet i défini les bocaux comme suit:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-servlet</artifactId> 
    <version>1.10</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-core</artifactId> 
    <version>${jersey-version}</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>${jersey-version}</version> 
    <scope>test</scope> 
</dependency> 

Cependant, lorsque je tente de déployer, je l'erreur suivante sur la classe de ServletContainer:

13:03:29,908 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.deployment.subunit."ApiEar-2.0.0-SNAPSHOT.ear"."ApiService-2. 
0.0-SNAPSHOT.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."ApiEar-2.0.0-SNAPSHOT.ear"."ApiService-2.0.0-SNAPSHOT.war".POST_MODULE 
: JBAS018733: Failed to process phase POST_MODULE of subdeployment "ApiService-2.0.0-SNAPSHOT.war" of deployment "ApiEar-2.0.0-SNAPSHOT.ear" 
     at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:123) [jboss-as-server-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1] 

     at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA-redhat-1.jar:1.0.2.GA-redhat-1] 
     at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA-redhat-1.jar:1.0.2.GA-redhat-1] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_32-ea] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_32-ea] 
     at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32-ea] 
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer from [Modu 
le "deployment.ApiEar-2.0.0-SNAPSHOT.ear.ApiService-2.0.0-SNAPSHOT.war:main" from Service Module Loader] 
     at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.checkDeclaredApplicationClassAsServlet(JaxrsScanningProcessor.java:295) 
     at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scanWebDeployment(JaxrsScanningProcessor.java:160) 
     at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:109) 
     at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:116) [jboss-as-server-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1] 

     ... 5 more 

Dans un premier temps, je recevais cette erreur quand je ne définissaient pas jersey servlet, mais je l'ai fait quelques recherches, et sans doute, jersey-servlet.jar est le celui qui contient cette classe. Cependant, cela a résolu l'erreur.

+1

AS7/JEE6 devrait déjà avoir tout ce dont vous avez besoin pour JAX-RS, sauf si vous utilisez des API spécifiques au maillot. Je voudrais d'abord essayer de se débarrasser du maillot et migrer vers JEE6/JAX-RS. – Tair

+1

@tair merci pour suggestion, mais ce n'est pas une option. Il ya littéralement des centaines de services en cours d'exécution en utilisant jersey, pas moyen de migrer maintenant ... –

Répondre

1

J'ai résolu le problème en ajoutant ces dépendances dans mon fichier manifest.mf. Dans mon fichier .pom j'ai ajouté le plugin build:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-ear-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifestEntries> 
        <Dependencies>com.jersey.jersey-server,com.jersey.jersey-client,com.jersey.jersey-json</Dependencies> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 

qui a ajouté des références aux fichiers nécessaires .jar dans mon fichier manifeste

1

Pas une réponse, mais je crois que cela a été mis en œuvre en jersey dans la version 10 C'est à ce moment qu'une grande révision de la bibliothèque s'est produite

+1

oui, c'est ce que j'ai découvert. Voici le lien parlant de Servlet dans 1.10 http://jersey.java.net/nonav/documentation/1.10/user-guide.html#d4e1721 –

Questions connexes