2011-09-29 3 views
1

Je veux consommer un service REST dans mon application Web (.war avec 6.0.0.Final), mais qui ont des difficultés à ajouter des libs jersey client:JBoss6 avec le client REST (Jersey-client)

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>1.9.1</version> 
    <type>jar</type> 
    <scope>compile</scope> 
</dependency> 

avec cette configuration, je reçois l'erreur suivante lors du démarrage JBoss:

08:11:28,297 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web]. 
[localhost].[/test]] Exception starting filter Resteasy: 
java.lang.ClassCastException: com.aht.erp.web.rest.JaxRsActivator 
cannot be cast to javax.ws.rs.core.Application 

Mon webapp a un JAX-RS activées avec l'annotation suivante:

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

@ApplicationPath("/rest") 
public class JaxRsActivator extends Application {} 

Si je n'ajoute pas la dépendance, ma guerre commence bien, mais bien sûr, je reçois un NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig quand le jersey-client est appelé. En excluant jersey-core, j'obtiens cette erreur: NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties.

Répondre

4

Je crois que le problème est que vous essayez de mélanger deux implémentations jax-r différentes dans votre application Web. Pour votre ressource RESTful vous utilisez RESTEasy, tandis que du côté client, vous voulez utiliser Jersey - tous utilisés par le même pot. Cependant, le client de Jersey dépend du noyau de Jersey, qui est en conflit avec RESTEasy. Ainsi, vous devrez soit vous fier à l'API du client RESTEasy, soit passer à Jersey pour votre serveur.