是否可以使用Jersey 2.x和RESTEasy依赖项目?

时间:2015-01-27 09:26:43

标签: java rest maven jersey resteasy

我正在开发一个项目,该项目使用各种客户端应用程序作为maven依赖项来与不同的REST API进行通信。

但是当包含使用Jersey 2.x实现的客户端以及使用RESTEasy的任何其他客户端时,会出现问题。

一旦我添加使用RESTEasy的依赖项,我就会收到这样的错误:

  

引起:javax.ws.rs.ProcessingException:无法找到   内容类型application / json的MessageBodyReader和类型类   de.fhg.ipa.vfk.docker.dockerregistry.restclient.entity.SearchResult     在   org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:39)     在   org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:73)     在   org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:50)     在   org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:245)     在   org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:179)     在   org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:211)     在   org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:104)     ......还有4个

或者这个:

  

引起:javax.ws.rs.ProcessingException:找不到编写器   content-type application / tar type:java.io.FileInputStream at   org.jboss.resteasy.core.interception.ClientWriterInterceptorContext.throwWriterNotFoundException(ClientWriterInterceptorContext.java:40)   在   org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.getWriter(AbstractWriterInterceptorContext.java:138)   在   org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:117)   在   org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.writeRequestBody(ClientInvocation.java:341)   在   org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.writeRequestBodyToOutputStream(ApacheHttpClient4Engine.java:558)   在   org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.buildEntity(ApacheHttpClient4Engine.java:524)   在   org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.loadHttpMethod(ApacheHttpClient4Engine.java:423)   在   org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:281)   ......还有7个

是否可以使用这两个库或以某种方式配置maven,以便应用程序不会尝试使用RESTEasy依赖项而不是Jersey 2.x,反之亦然?

由于

丹尼尔

1 个答案:

答案 0 :(得分:7)

你可以尝试使用Maven配置文件来激活Jersey或RESTEasy,但是你不能同时在同一个平面类路径中有两个JAX-RS实现。

如果必须在一个应用程序中同时使用这两个实现,则需要由OSGi或JBoss Modules等模块系统提供的类加载器隔离。

最好的方法可能是重构代码以仅使用JAX-RS 2.0客户端API并解决 泽西 RESTEasy的角落案例需要特定于实现的API。