Tôi có một dịch vụ đơn giản được chú thích bằng chú thích JAX-RS và bao gồm chú thích @Produces("application/json")
. Tôi đã thiết lập các thuộc tính sau khi tôi đăng ký dịch vụ (Tôi đang sử dụng DS nhưng đó không phải vấn đề):Trả lại JSON từ một dịch vụ RESTful bằng CXF DOSGI
service.exported.interfaces -> *
service.exported.configs -> org.apache.cxf.rs
org.apache.cxf.rs.address -> myURI
Khi tôi chạy ứng dụng của tôi, tôi có thể đánh địa chỉ URL, nhưng trình duyệt của tôi trả về:
No message body writer has been found for response class MyClass.
OSGi My console hiển thị:
Jan 11, 2012 2:29:48 PM org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor writeResponseErrorMessage
WARNING: No message body writer has been found for response class MyClass.
tôi đọc documentation và nghĩ có lẽ tôi cần phải đăng ký một nhà cung cấp JSON. Trong may Activator tôi đã thêm:
bundleContext.registerService(new String[] { "javax.ws.rs.ext.MessageBodyReader",
"javax.ws.rs.ext.MessageBodyWriter" },
new org.apache.cxf.jaxrs.provider.JSONProvider(), null);
nhưng điều này không có bất kỳ sự khác biệt nào.
Làm cách nào để khắc phục "Không tìm thấy trình soạn thảo nội dung thư nào cho lớp phản hồi MyClass". thông báo lỗi?
Rất tiếc, mặc định là Jettison, không phải Jackson, nhưng cũng giống như JAXB ... –