Tôi đã phát triển API Jersey trả về XML hoặc JSON (tùy thuộc vào tiêu đề yêu cầu). Khi triển khai trên máy chủ Windows 2012 của tôi (Tomcat), nó hoạt động không có vấn đề gì.Trả lại Json từ Jersey trên Linux ném ngoại lệ
Khi tôi triển khai (sau khi biên dịch nó trên Ubuntu) đến một máy tính Ubuntu trong AWS (Glassfish), tôi nhận được lỗi sau khi tôi yêu cầu JSON:
The server encountered an internal error that prevented it from fulfilling this request.
exception javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper
root cause org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper
root cause java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper
Không có lỗi khi tôi yêu cầu XML.
Ban đầu tôi đã sử dụng moxy để tuần tự hóa JSON, nhưng sau đó bắt đầu sử dụng Jackson.
Bất kỳ ý tưởng nào tại sao nó sẽ hoạt động trên một máy chủ chứ không phải máy chủ khác? Cảm ơn
Có thể là lỗi của Glassfish. Vui lòng tham khảo [trang này] (https://stackoverflow.com/questions/33722764/glassfish-error-when-producing-json). –
@KoheiTAMURA Vâng tôi đã thấy điều đó. Tôi nghĩ rằng họ đã phải sửa nó ngay bây giờ. Rõ ràng là không ... – onefootswill
Nếu bạn đặt tất cả các phụ thuộc liên quan đến Jersey của bạn là "được cung cấp" thì sao? Hãy nhớ rằng Tomcat không có lọ Jersey trong đó, vì vậy không có xung đột. Nhưng Glassfish _does_ có Jersey. Vì vậy, lọ dự án của bạn có thể xung đột. Vì vậy, bạn nên loại trừ chúng khỏi triển khai khi triển khai cho Glassfish, và chỉ sử dụng những cái được cung cấp bởi Glassfish. –