当我尝试测试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)
答案 0 :(得分:2)
您需要注册其中一个JSON JAX-RS提供程序。请参阅Jersey用户指南中专用于各种JSON提供程序的chapter。基本上,在选择提供程序并在类路径上添加适当的模块之后,您需要在Jersey运行时中注册一个提供程序,例如杰克逊将会:
Client client = ClientBuilder.newClient().register(JacksonFeature.class);
另请参阅Registering Resources and Providers in Jersey 2以了解此概念的工作原理。
答案 1 :(得分:0)
你必须添加genson-1.3.jar,它适用于我的情况