带REST客户端的JBoss6(jersey-client)

时间:2011-09-29 06:56:52

标签: java jersey jax-rs jboss6.x

我想在我的网络应用程序中使用REST服务(带有6.0.0.Final的.war),但在添加jersey-client库时遇到问题:

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

使用此配置,我在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

我的webapp有一个激活的JAX-RS,带有以下注释:

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

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

如果我不添加依赖性,我的战争就开始了,但当我调用jersey-client时,我当然得到NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig。排除jersey-core后,我收到此错误:NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties

1 个答案:

答案 0 :(得分:4)

我认为问题在于您尝试在Web应用中混合使用两种不同的jax-rs实现。对于您的RESTful资源,您使用的是RESTEasy,而在客户端则需要使用Jersey - 所有这些都由同一个jar使用。然而,Jersey客户端依赖于Jersey核心,它与RESTEasy冲突。因此,您要么必须依赖RESTEasy客户端API,要么也为服务器端切换到Jersey。