Basit bir GET isteği yapan bir JAX-RS istemcim var. CXF uygulamasını ve DI için Spring'i kullanıyorum. Çağrı başarılı ve 200 geri cevap kodu aldım. Ama POJO'mdaki cevabı okurken bir hata alıyorum.Cxf jax-rs 2.0 istemcisi için jackson json sağlayıcısı nasıl kaydedilir?
İstisna:
[2015-05-08 16:11:55,457][ERROR][org.apache.cxf.jaxrs.utils.JAXRSUtils]: No message body reader has been found for class com.voya.refapp.domain.Customer, ContentType: application/json
[2015-05-08 16:11:55,468][ERROR][com.voya.refapp.service.CustomerServiceImpl]: filterByName() - Exception occurred
javax.ws.rs.client.ResponseProcessingException: No message body reader has been found for class com.voya.refapp.domain.Customer, ContentType: application/json
at org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:433) ~[cxf-rt-frontend-jaxrs-3.0.4.jar:3.0.4]
at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:384) ~[cxf-rt-frontend-jaxrs-3.0.4.jar:3.0.4]
Kodu:
Client client = ClientBuilder.newClient(); WebTarget target = client.target("http://localhost:8080/rest").path("customers/1"); Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON_TYPE); Response response = builder.get(); // Successful Customer customer = response.readEntity(Customer.class); // Fails
benim sınıf yolunda this answer önerildiği üzere aşağıdaki bağımlılığı, bu görünmüyor
alınmayı otomatik olarak yukarıClient client = ClientBuilder.newClient().register(new JacsksonJsonProvider());
ve
Client client = ClientBuilder.newClient().register(JacsksonJsonProvider.class);
Fakat bu seçeneklerden hiçbiri de çalıştı:
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</dependency>
Ben de müşteri oluştururken json sağlayıcı kayıt çalıştı. json sağlayıcı ince
ClientBuilder.newClient().register(JacsksonJsonProvider.class)
kullanarak çalıştı kaydedilmesi
:
javax.ws.rs.client.ResponseProcessingException: Problem with reading the data
Güncelleme: Yukarıdaki seçeneklerden birini kullanarak json sağlayıcı kaydolurken farklı bir istisna var. Sorun, verilerle (yukarıdaki istisnalar açıkça anlaşılıyordu) şimdi aptalca hissediyorum :() "aktif" adlı jsonda boolean alanım vardı, ama POJO'da "isable" olarak adlandırıldı. POJO tarlaya açıklama @JsonProperty("active")
, ince
Cevabınız için teşekkür ederiz, Dawid. Söylediğin gibi seninkiyle aynı kodu aldım ama sorun jsondaki bool alan yüzünden oldu. Json'da "aktif", fakat POJO'da "isative" olarak adlandırıldı. POJO'daki alana @JsonProperty ("active") 'yi ekledikten sonra, iyi çalışmaya başladı. –