REST-Beispiel liefert XML aber kein JSON

Naryxus

Aktives Mitglied
Hallo,

ich bin neu im Bereich Web-Anwendungen mit Java.
Hinsichtlich meiner Bachelorarbeit, möchte ich mich dem Thema REST und Java-Servlets mit kleineren Beispielen nähern.

Ich hoffe, ich bin hier im richtigen Unterforum gelandet.

Erstmal eine kurze Beschreibung meines Problems:
Ich habe ein Servlet erstellt, das sowohl eine Antwort im XML- als auch im JSON-Format zurückgeben soll.
Die Rückgabe des XML-Formats funktioniert wunderbar. Beim JSON-Format bekomme ich jedoch einen "500 - Internal Server Error".

Kurz ein paar Randdaten zu meinem System:
Ich habe den Tomcat 7 auf meinem Raspberry Pi eingerichtet und greife über die URL "http://PI-IP:8080" auf den Tomcat zu. Bei dem Aufruf erhalte ich auch die "It works!"-Meldung.
Ich habe die Jersey-Implementierung der Java REST-API über die .jar-Archive eingebunden.
Ich weiß nicht, ob es was zur Sache tut, aber das Verzeichnis auf meinem Server sieht wie folgt aus:
  • ROOT
    • WEB-INF
      • classes
        • "Java-Dateien"
      • lib
        • Jersey-Archive (unter anderem auch "jersey-json.jar"
      • web.xml

Das Servlet ist wie folgt aufgebaut:
Java:
@Path("todo")
public class TodoResource {

   @GET
   @Path("json")
   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
   public Todo getData() {
      Todo todo = new Todo(...) //Erzeugen des Datums (Die Klasse Todo ist mit "@XMLRootElement" getaggt)
      return todo;
   }
}

Ich habe das auf zwei Arten getestet:
  1. Ich habe jeweils einen MediaType entfernt und den Pfad im Browser aufgerufen
  2. Ich habe über den mitgelieferten ClientConfig von Jersey einen Testclient erstellt, in dem ich einmal XML und einmal JSON fordere:
    Java:
    String answer = target.path("rest").path("todo/json").request().accept(MediaType.APPLICATION_XML/*JSON*/).get(String.class);
    (target ist natürlich auch wieder auf die richtige URL gesetzt)

Wie oben schon angedeutet, habe ich jeweils die korrekte XML-Struktur bekommen und bei dem JSON-Test jeweils einen "HTTP Status 500 - Internal Server Error".

Ich kann mir leider nicht erklären, woher der Fehler kommt. Habt ihr vielleicht eine Idee?
Danke schon mal und Grüße,
Naryxus
 

Dompteur

Top Contributor
Dir fehlen offensichtlich noch Libraries.
Du kannst versuchen, diese händisch zu finden und deinem Projekt hinzuzufügen.
Du kannst aber auch Maven verwenden. Dann passiert das mehr oder weniger automatisch.
 

Naryxus

Aktives Mitglied
Das mit dem händisch hab ich schon probiert. Aber alles, was ich eingefügt habe, hat das Problem nicht behoben...
Hättest du vielleicht eine kurze Erklärung für mich, wie ich das mit Maven und dem Pi/Server hinbekomme?
Ich habe bis jetzt nur Tutorials gefunden, wie ich das mit Eclipse einrichten kann. Ich entwickle zwar momentan noch in Eclipse (von meinem Betreuer aus soll ich bald auf IntelliJ umsteigen), aber das läuft ja nicht auf dem Server. Bis jetzt habe ich immer die Java-Klassen lokal auf meinem PC geschrieben und die kompilierten Klassen dann auf den Server geschoben.

Danke schon mal!
 

Dompteur

Top Contributor
Es ist gar nicht so unüblich, dass das Entwicklungssysten und das Produktionssystem unterschiedlich sind. Bei dir spricht schon allein der großen Leistungsunterschied zwischen Raspberry und PC dafür, das du das beibehältst.

Ich würde also das Maven Plugin in Eclipse installieren und mir so die jar-Files holen. Danach siehst du in Eclipse, welche jar-Files benötigt werden. Die kannst du dir dann auch in ein Nicht-Maven Projekt kopieren - wenn du das unbedingt willst.
Maven brauchst du erst dann wieder, wenn du deine Jersey-Version upgraden willst.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben