Chúng tôi đã có một ứng dụng JAX-RS chạy trên Apache TomEE. Chúng tôi hơi tùy chỉnh nhà cung cấp Jettison mặc định để tuân thủ tốt hơn các quy ước JSON được sử dụng bởi giao diện người dùng JavaScript. TomEE cho phép để làm điều đó thông qua tập tin resources.xml của nó:Tùy chỉnh JSON marhsalling bằng GlassFish v4
<resources>
<Service id="jettison" class-name="org.apache.cxf.jaxrs.provider.json.JSONProvider">
serializeAsArray = true
dropRootElement = false
arrayKeys = members,roles
supportUnwrapped = true
writeXsiType = false
</Service>
</resources>
Bây giờ chúng ta chuyển sang GlassFish v4.1, và chúng tôi nhận thấy rằng JSON đầu ra khác với những gì chúng tôi đã có trong TomEE - do đó frontend hoàn toàn phá vỡ. Tôi đang tìm cơ chế tương tự để tùy chỉnh trình soạn thảo JSON trong GlassFish. Trong thực tế, tôi đã có một chút stuck với Jersey, MOXy, Jackson, Jettison. Làm cách nào để chúng tôi biết nhà cung cấp JSON nào thực sự được sử dụng? Làm thế nào để chúng ta chọn một? Làm cách nào để tùy chỉnh hành vi?
Ứng dụng này là JAX-RS thuần túy và không trực tiếp sử dụng bất kỳ bộ xử lý JSON nào, thay vào đó dựa vào việc sắp xếp các lớp được chú thích của JAXB. Giới thiệu về bất kỳ phụ thuộc không phải JavaEE nào là không mong muốn, vì ứng dụng được dự định di chuyển trên các thùng chứa (TomEE, GlassFish, một số ngày WildFly). Phương pháp tập tin cấu hình, tương tự như TomEE, là thích hợp hơn; cách lập trình cũng có thể chấp nhận được - nhưng chỉ khi tính di động được duy trì.
Tìm hiểu về 'jersey.config.server.disableMoxyJson' đưa tôi đến một ngày. Cuối cùng tôi đã có nhà cung cấp Gson của tôi làm việc. Cảm ơn! –