Chúng tôi đang sử dụng (các) IBM kèm theo Apache Wink để cung cấp các điểm cuối JAXRS cho ứng dụng của chúng tôi. Chúng tôi đang mã hóa theo hướng Websphere 8.5.5. Vì chúng ta tuân thủ servlet 3.0, chúng ta sử dụng cách 'lập trình' để cấu hình ứng dụng JaxRS, có nghĩa là không có mục nào trong web.xml và chúng ta dựa vào quét lớp cho các tài nguyên rs jax có chú thích. Nói chung nó hoạt động tốt.Ghi đè lên các thuộc tính của Trình ánh xạ đối tượng Jackson trên Websphere 8.5.5 bằng cách sử dụng Apache Wink
@ApplicationPath("/api/v1/")
public class MyApplication extends Application{
Phiên bản Websphere này cùng với Apache Wink, sử dụng Jackson 1.6.x cho JSON de/serialization và nói chung nó hoạt động tốt. Mặc dù chúng tôi muốn thay đổi một số giá trị mặc định của Object Mapper
Vì vậy, chúng tôi đã xác định giải pháp ngữ cảnh của khách hàng, nơi chỉ thay đổi một số thuộc tính se/deserialzation.
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJackssonConverter implements ContextResolver<ObjectMapper> {
final ObjectMapper defaultObjectMapper;
public AibasJackssonConverter() {
defaultObjectMapper = createDefaultMapper();
}
...
mapper.getSerializationConfig().set(SerializationConfig.Feature.INDENT_OUTPUT, true);
Trong cuộc gọi JAX-RS chúng ta có thể thấy rằng container đăng ký nhà cung cấp mới, không có lỗi
Vấn đề là, Configuration không 'tiếp', từ các bản ghi tôi có thể thấy rằng Wink Engine đang tìm kiếm một WinkJacksonProvider, mà lần lượt .. trả lại một JacksonProvider đang theo các giá trị mặc định của Jackson?
Có cách nào để thay đổi giá trị mặc định này không?
Tôi đã cố gắng thay đổi việc triển khai đối tượng Ứng dụng như được nêu ở đây, để định cấu hình Nhà cung cấp theo chương trình, nhưng nó không hoạt động.
http://www.ibm.com/developerworks/java/library/wa-aj-jackson/index.html
Bất kỳ gợi ý hay mẹo nào?
Rất cám ơn
Bạn đã thử diễn đàn WebSphere chưa? http://ibm.biz/websphere-forum – dbreaux
Tôi không thể làm việc này. Khi tôi bao gồm một JacksonJsonProvider trong ứng dụng getClasses(). Websphere sẽ sử dụng Jackson. Nhưng không có cách nào để tùy chỉnh Jackson. Nếu tôi thay vào đó bao gồm một tùy chỉnh cấu hình JacksonJsonProvider trong ứng dụng getSingletons(). Websphere sẽ không sử dụng nó. Không có đối tượng Response (hoặc payload) của chúng được serialized. Phương thức REST sẽ trả về một phần thân trả về không có gì. (Cuộc sống dễ dàng hơn nhiều với TomcatEE.) – devdanke