首页 文章

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

提问于
浏览
4

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

但是当包含使用Jersey 2.x实现的客户端和使用RESTEasy的任何其他客户端时存在问题 .

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

引起:javax.ws.rs.ProcessingException:无法找到内容类型application / json的MessageBodyReader,并在org.jboss.resteasy中键入class de.fhg.ipa.vfk.docker.dockerregistry.restclient.entity.SearchResult Org.jboss.resteasy.core.interception.AbstractReader接受一个org.jboss.resteasy.core.interception.AbstractReader接受一个org.jboss.resteasy.core.interctor.AbstractRector接受一个文件 . 或者接受org.jboss.resteasy.core.interce.AbstractReader接受一个文件 . (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)at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:104)... 4更多

或这个:

引起:javax.ws.rs.ProcessingException:找不到内容类型应用程序/ tar类型的编写器:org.jboss.resteasy.core.interception.ClientWriterInterceptorContext.throwWriterNotFoundException中的java.io.FileInputStream(ClientWriterInterceptorContext.java:40 )org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.getWriter(AbstractWriterInterceptorContext.java:138)org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:117)at org.jboss.resteasy . org.jboss.resteasy.client.jaxrs上的org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.writeRequestBodyToOutputStream(ApacheHttpClient4Engine.java:558)中的client.jaxrs.internal.ClientInvocation.writeRequestBody(ClientInvocation.java:341) . engine.ApacheHttpClient4Engine.buildEntity(ApacheHttpClient4Engine.java:524)位于org.jboss的org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.loadHttpMethod(ApacheHttpClient4Engine.java:423) . resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:281)... 7更多

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

谢谢

丹尼尔

1 回答

  • 7

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

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

    最好的方法可能是重构代码以仅使用JAX-RS 2.0客户端API,并针对需要特定于实现的API的极端情况解决Jersey或RESTEasy问题 .

相关问题