2011-09-29 146 views
1

我想在我的web應用程序(與6.0.0.Final .WAR)消費REST服務,但有問題增加球衣的客戶端庫:JBoss6與REST客戶端(新澤西客戶端)

<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 

我的web應用程序具有激活的JAX-RS具有以下注釋:

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

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

如果我不添加依賴我的戰爭開始很好,但當我調用球衣客戶端時,我當然會得到一個NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig。通過排除jersey-core我收到此錯誤:NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties

回答

4

我認爲問題在於您正在嘗試在Web應用中混合使用兩種不同的jax-rs實現。對於您正在使用RESTEasy的RESTful資源,而在客戶端則要使用Jersey - 全部由同一個jar使用。但澤西島客戶端依賴澤西島核心,這與RESTEasy衝突。所以,你必須依賴RESTEasy客戶端API,或者在服務器端切換到Jersey。