2015-09-14 10 views
6

Arbeiten mit Spring Data Rest wird fortgesetzt. Der Wechsel zu 2.4.0 gab mir mehr von dem Verhalten, das ich möchte, aber jetzt bekomme ich eine seltsame zeitweilige Ausnahme.Frühling Data Rest 2.4 intermittierenden Fehler (ClassCastException)

Über. . . 2/3 der Zeit, wenn ich meine Anwendung neu zu laden oder einsetzen, wirft jeder SDR Endpunkt mit Daten, die ein 500, und gibt den folgenden:

GET /api/departments 
-------------------- 

HTTP Status 500 - Could not write content: org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$ProjectionResourceContentSerializer 
cannot be cast to com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer 
(through reference chain: 
org.springframework.hateoas.PagedResources["_embedded"] 
->java.util.UnmodifiableMap["departments"] 
->java.util.ArrayList[0] 
->org.springframework.data.rest.webmvc.json.ProjectionResource["content"]); 

nested exception is com.fasterxml.jackson.databind.JsonMappingException: 
org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$ProjectionResourceContentSerializer 
cannot be cast to com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer 

(through reference chain: 
org.springframework.hateoas.PagedResources["_embedded"] 
->java.util.UnmodifiableMap["departments"] 
->java.util.ArrayList[0] 
->org.springframework.data.rest.webmvc.json.ProjectionResource["content"]) 

(Vollständiger Fehlerbericht zur Verfügung: http://pastebin.com/xzzXkFiR)

Wie ich schon sagte Dies passiert nicht jedes Mal, wenn ich die App neu lade/vertreibe, aber wenn sie auftritt, ist sie vollständig blockiert, und ein Neuladen ist die einzige Möglichkeit, sie zu beheben. Sehr merkwürdiges Verhalten, sich fragend, ob irgendjemand irgendeine Einsicht hat.

Problem tritt nicht auf, wenn ich Spring Data Erholung Rollback 2.3.2

Danke für die Hilfe, und lassen Sie es mich wissen, was andere relevante Informationen, die ich zur Verfügung stellen kann.

  • SDR: 2.4.1
  • SFW: 4.2.1
  • SDJPA: 1.9.0
Einige weitere Tests

Problem tritt auch mit den neuesten (2.5.0 SNAPSHOT).

+1

Sind Sie auf Windows-Anwendung ausgeführt wird (wird erklären, mich besser, wenn diese positive Antwort hat) ... auch ich würde beginnen Abhängigkeitshierarchie Überprüfung (falls Sie Maven verwenden) für doppelte oder inkonsistente Abhängigkeiten. –

+0

Ich führe es auf einem Cent 7/tomcat vm sowie Ubuntu 12.04 – CollinD

+0

können Sie Ihre Controller-Klasse, und Ihre Entitäten bitte –

Antwort

2

Fehler in der Jackson-Datenbank. Upgrade auf Zug Gosling-SR3 einmal freigegeben.

Siehe https://jira.spring.io/browse/DATAREST-716 und https://jira.spring.io/browse/DATAREST-743

+0

Nun, ich bin super froh zu hören, dass dies eine Auflösung hat. Vielen Dank für ein Update! Ich werde es ausprobieren und sehen, wie es funktioniert und am wahrscheinlichsten später akzeptiert. – CollinD

+0

Eigentlich habe ich gerade entdeckt, dass es einen weiteren Fehler und einen Patch bezüglich dieses Fehlers gibt, der mit Gosling-SR3 veröffentlicht wird. Siehe https://jira.spring.io/browse/DATAREST-743 – jplandrain

+1

Gosling-SR4 wurde veröffentlicht (Version SR3 existiert nicht). Das Problem ist behoben. https://spring.io/blog/2016/02/23/spring-data-gosling-sr4-released – jplandrain

6

Ich kann das gleiche Problem nach der Aktualisierung auf Spring Data Rest 2.4.0 beobachten. Das Problem ist nicht deterministisch reproduzierbar. Ich habe bisher keine Statistiken, aber es kommt weniger häufig vor, nachdem Jackson-Abhängigkeiten von 2.4.0 auf 2.6.0 aktualisiert wurden. Manchmal taucht es immer noch auf, aber dann ist ein Nachladen in meinem Fall ausreichend. Ein minimales Beispiel würde helfen, tiefer in sie einzutauchen.

+0

Ich werde daran arbeiten, eins zusammen zu bekommen und es auf GH zu bekommen. Danke für die Eingabe und Überprüfung! – CollinD

+2

Ich hatte Probleme, ein minimales Beispiel zu erstellen. Ich glaube jedoch, das Problem tritt nur auf, wenn mehrere API-Anfragen gleichzeitig abgefeuert werden, wenn die App initialisiert wird. Gibt es eine Möglichkeit, das mühsame Laden aller relevanten Beans für SDR als Test zu erzwingen? – CollinD

+3

Weitere Informationen, es scheint, dass es sogar JUST spezifischen Repositories brechen kann? Das ist das seltsamste Problem, das ich gesehen habe. – CollinD

Verwandte Themen