JBoss6 с клиентом REST (клиент-джерси) - PullRequest
1 голос
/ 29 сентября 2011

Я хочу использовать службу REST в своем веб-приложении (.war с 6.0.0.Final), но у меня возникают проблемы при добавлении библиотек 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

У моего веб-приложения есть активированный 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.

1 Ответ

4 голосов
/ 30 сентября 2011

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

...