【问题标题】:JAX-RS Client side JSON handlingJAX-RS 客户端 JSON 处理
【发布时间】:2014-07-17 21:53:23
【问题描述】:

当我尝试测试 JSON 数据交换时,我在 JAX-RS 客户端遇到异常。我正在使用 Jersey 2.10、JDK1.7、Tomcat7.0。有人可以通过示例说明我需要采取哪些步骤来完成这项工作。到目前为止,我还没有在客户端配置 ContextResolver、Provider、MessageBodyWriter/Reader。

以下是异常堆栈跟踪,

    SEVERE: MessageBodyWriter not found for media type=application/json, type=class org.vedvrat.jaxrs.model.Customer, genericType=class org.vedvrat.jaxrs.model.Customer.
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class org.vedvrat.jaxrs.model.Customer, genericType=class org.vedvrat.jaxrs.model.Customer.
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154)
    at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:500)
    at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:315)
    at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:227)
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:224)
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:656)
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:653)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424)
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:653)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:413)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:322)
    at org.vedvrat.jaxrs.client.bbc.six.JSONRequestTest.main(JSONRequestTest.java:40)

【问题讨论】:

    标签: json jax-rs moxy jersey-2.0 jersey-client


    【解决方案1】:

    您需要注册其中一个 JSON JAX-RS 提供程序。请参阅 Jersey 用户指南中专用于各种 JSON 提供程序的chapter。基本上,在选择提供程序并在类路径上添加适当的模块后,您需要在 Jersey 运行时注册一个提供程序,例如对于杰克逊来说,这将是:

    Client client = ClientBuilder.newClient().register(JacksonFeature.class);
    

    另请参阅Registering Resources and Providers in Jersey 2,了解此概念的工作原理。

    【讨论】:

      【解决方案2】:

      您必须添加 genson-1.3.jar,它在我的情况下有效

      【讨论】:

        猜你喜欢
        • 2016-02-21
        • 2019-09-25
        • 1970-01-01
        • 2023-04-04
        • 2015-02-20
        • 1970-01-01
        • 1970-01-01
        • 2016-12-06
        • 2013-06-03
        相关资源
        最近更新 更多