Używam aplikacji Jackson (w Jersey) do przekształcania obiektów na części i przenoszę się z wersji Jackson 1.9 do wersji 2.0. Poszłam za this guide i początkowo wydawało mi się, że wszystko dobrze się układało.Aktualizacja do wersji Jackson 2.0 z wersji 1.9 na serwerze Jersey nie działa
Ale bliżej przyjrzeć się, że Jackson 1.9 nadal jest używany do serializacji moich odpowiedzi, a zatem ignorując moją (przeniesioną) adnotację Jackson 2.0. Można zobaczyć, które adnotacje używam w następujący fragment kodu:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public abstract class IdEntity {
@Id
@JsonDeserialize(using = ObjectIdJsonDeserializer.class)
protected ObjectId id;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonSerialize(using = ObjectIdJsonSerializer.class)
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
@JsonIgnore
public String getIdAsString() {
return id == null ? "" : id.toString();
}
Moi @JsonIgnore getters są coraz odcinkach, a mój ObjectIdJsonSerializer nie jest wykorzystywana dla pola objectID.
Podczas debugowania widzę, że używana jest ObjectMapper z wersji 1.9.
Usunąłem wszystkie zależności od bezpośrednich mavenów do Jacksona 1.9 i próbowałem dodawać wykluczenia do jersey-json, aby zapobiec wciągnięciu Jacksona 1.9. Ale nie mogę się tego całkowicie pozbyć (przez umieszczenie wykluczenia na wszystkich elementach codehaus.jackson w moim zarządzaniu zależnościami), ponieważ używam także Spring AMQP, który potrzebuje Jackson 1.9.
Wszelkie pomysły na zarządzanie tym produktem? Czy ktoś napotkał/rozwiązał podobny problem? Jak zmusić Jersey do używania Jackson 2.0?
Nie używam Maven i wymieniłem wszystkie artefakty org.codehaus z ich wersjami fasterxml. Użyłem [tego przewodnika] (http://www.cowtowncoder.com/blog/archives/2012/04/entry_469.html) do przeprowadzenia migracji. – Eyal
To zrozumiałem. Mówię tylko, że być może inny projekt (Jersey?) Może zawierać Jackson 1.x jako zależność przechodnią i dodać go do ścieżki klasy, i być może ta wersja jest używana jako dostawca JAX-RS. Jeśli dobrze pamiętam, możliwe jest sprawdzenie zależności projektu z mavenem, powinieneś go użyć. –
Jersey przynosi stare zależności Jacksona, ale wydaje się, że są to czasy kompilacji, więc nie jestem pewien, czy to problem. Na pewno to sprawdzę, oczywiście :-) – Eyal