Opracowałem interfejs API języka Jersey, który zwraca kod XML lub JSON (w zależności od nagłówka żądania). Po wdrożeniu na moim serwerze Windows 2012 (Tomcat), nie działa żaden problem.Powracający Json z Jersey na Linuksie zgłasza wyjątek
Kiedy wdrożyć (po kompilacji go na Ubuntu) do Ubuntu w AWS (GlassFish), otrzymuję następujące błędy podczas żądania 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
Brak błędów kiedy żądania XML.
Pierwotnie używałem moxy do serializacji JSON, ale potem zacząłem używać Jackson.
Jakieś pomysły, dlaczego działa na jednym serwerze, a nie na innym? Dzięki
Może to być błąd Glassfish. Proszę odnieść się do [tej strony] (https://stackoverflow.com/questions/33722764/glassfish-error-when-producing-json). –
@KoheiTAMURA Tak, widziałem to. Doszedłem do wniosku, że musieli to naprawić. Najwyraźniej nie ... – onefootswill
Co się stanie, jeśli wszystkie zależności związane z Jersey będą traktowane jako "dostarczone"? Pamiętaj, że Tomcat nie ma w nim słoików z Jersey, więc nie ma konfliktu. Ale Glassfish _does_ ma Jersey. Więc twoje słoiki projektu mogą być w konflikcie. Powinieneś więc wykluczyć je z wdrożenia po wdrożeniu do Glassfish i po prostu użyć tych dostarczonych przez Glassfish. –