# Webseite parsen --> DB --> JSON



## Prengepower (28. Nov 2012)

Hallo!

Ich habe noch keinerlei Erfahrung mit Java im Server Bereich und möchte mich nun an mein erstes Projekt wagen. Leider weiß ich nicht wie ich so recht damit anfangen soll und was ich überhaupt für einen Server dafür benötige.

Folgendes Vorhaben habe ich geplant:
Ich möchte ein Java-Programm laufen lassen, welches stündlich eine Webseite downloaded, verarbeitet und die gefundenen Daten in eine Datenbank speichert.
Diese Daten sollen von einer Android-App dann abgerufen werden. Dazu sollen Parameter wie bspw. die Stadt übergeben werden. Also Antwort vom Server soll dann an die App eine JSON-Datei geschickt werden.

Das Java-Programm zum Download der Website und dem Speichern in der Datenbank funktioniert soweit lokal auf meinem Rechner. Mir ist auch ohne frage klar, wie ich aus der Datenbank eine JSON generiere. Allerdings ist mir absolut nicht klar, wie ich die ganze Kommunikation mit der Server anstelle.

Kann mir da vielleicht jemand mal beim Einstieg helfen?

Vielen Dank schonmal für eure Hilfe!


----------



## schlingel (28. Nov 2012)

Wenn du schon ein Program hast das die Website parsed und dann die DB befüllt brauchst du ein einfaches Servlet dass dir dann auf den User-Request reagiert.

Für ein Servlet reicht ein Tomcat oder ein Jetty, da brauchst du keinen kompletten JavaEE-Server. Der JavaEE-Standard leistet ja deutlich mehr als du brauchst.

Ich persönlich empfinde Servlet als eine tolle Sache. Weit genug abstrahiert das man schnell so einen Service auf die Beine stellen kann, nicht zu sehr abstrahiert so dass man sehr schnell starten kann ohne sich großartig in viele Technologien einzulesen.

Hier steht eigentlich so ziemlich alles drin was du brauchst um mal einen kleinen Service zu schreiben. Wenn du das JSON schon hast, schreibst du das einfach per Writer raus und du bist fertig.

Auf der Android-Seite rufst du dann entweder per GET oder POST den Service auf. (Aufpassen welche Methode du im Servlet implementierst, doGet und doPost handeln dann entweder den einen oder den anderen Request.) In Android kannst du entweder per HttpUrlConnection-Klasse (von Google empfohlen) oder mit WebClient arbeiten. WebClient hat den Vorteil, dass schon sehr viel abstrahiert ist.


----------



## Prengepower (28. Nov 2012)

Okay.
Und verstehe ich das dann richtig das ich dann bspw. folgende URL habe:

www.server123.com/myproject/myrequest1?content=abc
www.server123.com/myproject/myrequest2

Sodass ich über myrequest1 alle Daten aus der DB mit dem Inhalb abc als JSON bekomme und mit myrequest2 eine bestimmte Anfrage abhandle wo keine Parameter übergeben werden. Ist das so korrekt?

Und das parsen der Webseite soll ja nicht auf Nutzereingaben reagieren oder gestartet werden, dass soll ja als eine Art Cronjob laufen. Wie ist das zu realisieren?

EDIT: Welchen Hoster kannst du empfehlen?

Danke!


----------



## schlingel (28. Nov 2012)

Ja, z.B. Kommt darauf an wie du deinen Server konfigurierst. Ich weiß nicht wie das per Default ausschaut. Siehe dazu die Doku.

Ich hab bis jetzt keinen guten Servlet-Hoster gefunden, deshalb empfehle ich einfach einen Root-Server anzuschaffen. Der kann natürlich auch als VM laufen, dann kostet das je nach Ausstattung nur ein paar Euro im Monat.

Dort kannst du dir dann echte Cron-Jobs einrichten oder du schreibst dein Java-Programm so um, dass es die ganze Zeit läuft und in regelmäßigen Zeitabständen Aufrufe macht.


----------



## Prengepower (28. Nov 2012)

Du meinst also mit Root-Server anschaffen, dass ich mir selbst einen physischen Server in die Wohnung stelle? Oder das ich mir einen Root-Server miete? Sorry falls das vielleicht eine "dumme" Frage ist..


----------



## schlingel (28. Nov 2012)

Mieten, so was von Hetzner zum Beispiel.


----------

