# FTP und Servlet



## Jerome87 (11. Aug 2015)

Hallo erstmal alle,

Mein Name ist Jerome und ich bin relativ neu im Bereich Java. Ich würde mich freuen wenn ihr mir bei einem kleinen Problem weiterhelfen könnt.

Ich versuche mir die Arbeit hier auf der Arbeit )) zu erleichtern und wollte mir eine kleine Java Anwendung schreiben welche mir meine Deployments automatisch erledigt.

Wie ich die automatischen Deployments angehe, das habe ich lokal schon am Laufen. Gut, ein paar Feinschliffe hier und da sind noch nötig, aber bislang ist noch kein Meister vom Himmel gefallen.

Was mir mehr Kopfzerbrechen bereitet ist folgendes:

Ich habe meine Startseite (index.html), wo ich die Parameter eingebe (user, password, server, pfad). Mit diesen Infos wird eine FTP Verbindung aufgebaut. Den code habe ich hier entnommen und demenstprechend an unsere Infrastruktur angepasst (http://www.codejava.net/java-se/networking/ftp/connect-and-login-to-a-ftp-server). Funktioniert an sich auch gut. 

Wenn ich auf meiner index.html auf den Button "Verbinden" klicke, soll mein Servlet aufgerufen werden und ich möchte ganz gerne meine Dateien auflisten die ich deployen soll 

Nur funktionniert die Auflistung mal gar nicht...

Im Servlet kommt meine Logik in die doPost Methode. Dazu habe ich eine weitere Klasse "Deploy.java", welche die rekursive Methode zum Durchsuchen enthält. Hier wird auch der Name der Datei ausgegeben (nicht in der Servlet, ich denke dort liegt irgendwie das Problem :/)

Ich würde mich freuen wenn von euch jemand schon mal sowas gemacht hat und mir weiterhelfen könnte

Danke schon mal im Voraus


----------



## stg (11. Aug 2015)

Keeeeeeine Ahnung, was du da genau vorhast bzw ob ich das Problem richtig verstehe. 
Aber: Du schreibst in der listDirectory-Methode ja in den Standard-OutputStream. Vielleicht reicht es für deine Anforderungen ja bereits einfach den Output-Stream vom Response zu übergeben und stattdessen da hinein zu schreiben?


----------



## Jerome87 (11. Aug 2015)

Eine ähnliche Lösung habe ich bereits im Internet gefunden. Ich weiß jedoch nicht ob es an meiner Umsetzung oder an der Logik hapert. Geholfen hat es mir nicht :/

Ich erklär noch mal schnell was ich eigentlich machen will. Ich rufe meine Anwendung auf und gelange auf die index.html. Dort gebe ich die Parameter ein (user, passwort, server, pfad) und klicke auf den Button "Verbinde".
Daraufhin soll die Verbing zum FTP-Server gemacht werden (mittels Parameterübergabe) und ich will in meinem Pfad alle ".ear" Dateien auflisten.

Wenn ich das Programm lokal laufen lasse (Deploy.java mit einer Main Methode), funktioniert es. Die Verbdindung wird aufgebaut und die Dateien aufgelistet.
Wenn ich die Klassen jedoch zu einem .war packe und auf dem Glassfish deploye, komm ich auch auf die Startseite, geb die Parameter ein, jedoch wird nach dem Klicken auf den Button nur eine weiße Seite angezeigt. Eigentlich wollte ich hier meine ".ear" Dateien auflisten :/

Danke trotzdem für deinen Aufwand


----------



## MisterBu (11. Aug 2015)

Kenne jetzt Glassfish nicht, aber auch der wird irgendwelche Logs schreiben, in die du einen Blick werfen solltest.


----------



## Jerome87 (11. Aug 2015)

Danke für den Typ  Im Logfile sehe ich schon, dass die ".ear" Dateien gelistet werden, nur werden sie in der Servlet nicht angezeigt. Da bin ich wieder beim Output problem.

Vielen Dank für deine Hilfe


----------



## MisterBu (12. Aug 2015)

Habe mir jetzt mal deinen Quelltext angeschaut. Du gibst ja auch nirgends etwas in den Response aus. Im Gegenteil:
//PrintWriter out = response.getWriter();
Du hast den PrintWriter in den du deine Ausgaben schreiben müßtest sogar auskommentiert.


----------



## Jerome87 (12. Aug 2015)

Hallo,

ja dem bin ich mir bewusst  ist aber nur auskommentiert weil ich am Ausprobieren war. das Problem ist, das ich nicht weiß wie ich die Ausgabe (system.out.println(currentfilename)) aus der Deploy.java Klasse an das Servlet weitergeben kann :/


----------



## stg (12. Aug 2015)

Dazu sagte ich doch schon in der ersten Antwort was.
Du kannst natürlich auch einfach eine Liste (oder, wenn erforderlich einen Baum o.Ä.) mit den Daten füllen und dann zurückgeben und weiterverarbeiten, wenn oben genanntet Vorschlag nicht ausreichend ist.


----------



## Jerome87 (12. Aug 2015)

ich versuchs noch mal. klappt vielleicht heute mit der Umsetzung


----------



## stg (12. Aug 2015)

...und um eine fehlerhafte Konfiguration einfach mal auszuschließen, kannst du stattdessen ja einfach mal ein "Hello-World"-Servlet stattdessen aufrufen


----------



## Jerome87 (12. Aug 2015)

Hallo,
ich habe nun mal wie vorgeschlagen eine sehr einfache Anwendung gebastelt. Ich gebe weiterhin auf der startseite einige Parameter ein, schicke sie ab und lasse mir sie anschließend in einer Serlvet schön formatiert im Browser wieder ausgeben.
So, wo ich mein Problem sehe ,ist die Übergabe des System.out.println meiner "normalen" Java Klasse in die Servlet Klasse. Ich gebe zu, ich habe damit noch nie wirklich Erfahrung gesammelt, aber an sich dürfte es nicht so schwer sein...so langsam weiß ich nicht mehr was ich noch versuchen kann...

in meinem Java Buch bin ich auch auf response.getOutputStream() gestoßen, nur mein Problem ist folgendes: ich weiß beim besten Willen nicht, wie ich mein System.out.println in diese Methode setzen/übergeben kann


----------



## stg (12. Aug 2015)

Wie ich das sehe solltest du erstmal Grundlagen pauken und dich nicht direkt an Enterprise-Applikationen wagen. 
Allein die Aussage 





> ich weiß beim besten Willen nicht, wie ich mein System.out.println in diese Methode setzen/übergeben kann


 zeigt ganz deutlich, dass wirklich elementare Grundlagen schlicht nicht vorhanden sind. 
Das ist auch wirklich als konstruktiver Vorschlag gemeint, um dir zukünftige Frustration zu ersparen. Da muss man am Anfang halt mal durch; schnapp dir ein Buch zu Java-Grundlagen und fang damit ganz vorn bei Kapitel 1 an. In jedem Buch zu fortgeschrittenen Themen werden die Grundlagen einfach vorrausgetzt. Du hast ja in deinem bereits die Antwort gefunden, was zu tun ist, und auch hier hast du schon zwei Lösungsvorschläge bekommen.


----------

