JBoss6 с REST-клиентом (трикотажный клиент)

Я хочу использовать службу REST в своем веб-приложении (.war с 6.0.0.Final), но у меня проблемы с добавлением клиентских библиотек jersey:

<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

В моем веб-приложении активирован 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-client. Исключая jersey-core, я получаю эту ошибку: NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties.


person Thor    schedule 29.09.2011    source источник


Ответы (1)


Я считаю, что проблема в том, что вы пытаетесь смешать две разные реализации jax-rs в своем веб-приложении. Для вашего ресурса RESTful вы используете RESTEasy, а на стороне клиента вы хотите использовать Jersey — все они используются одним и тем же банком. Однако клиент Джерси зависит от ядра Джерси, что конфликтует с RESTEasy. Таким образом, вам придется либо полагаться на клиентский API RESTEasy, либо переключиться на Джерси и для серверной части.

person Martin Matula    schedule 30.09.2011