Dateidownload NullPointerException
Posted: Tue Oct 11, 2011 2:46 pm
Hallo,
ich bin gerade dabei mir das JVx Framework anzusehen. Es würde perfekt zu einem Projekt passen, allerdings bin ich auf ein paar Probleme gestoßen. Die meisten konnte ich zwar selbst lösen, aber bei dem Versuch eine Datei vom Server herunterzuladen scheitere ich. Als Server läuft ein Tomcat6 mit dem JVx und ein paar Klassen. Das Upload und Download-Servlet befindet sich in der web.xml. Alle libs, die die Showcase Applikation hatte sind auch hier eingebunden. Die Client-Applikation ist eine einfache SwingApplication. Die Verbindung läuft über die HTTPConnection, allerdings via https. Dateiupload funktioniert gut, zumindest wenn die Dateien klein sind. Da bin ich schon des öfteren über OutOfMemoryError's gestolpert (hochgeladen wurde eine Datei > 500MB).
Edit: Ich benutze die aktuellste .jar von Jvx 1.0 (Beta 4).
Am Server gibt es eine Action die vom Client aufgerufen wird:
Ich habe es mit drei Varianten versucht eine Datei zurückzugeben (Leserechte auf die Datei sind vorhanden):
oder
oder
Ausgaben am Server verifizieren immer, dass das Objekt korrekt instanziert wurde und die Länger ( getLength() ) gesetzt ist.
Der Client ruft die Methode folgendermaßen auf:
Ein Objekt vom Typ FileHandle wird auch zurückgegeben. Auch der Dateiname ist gesetzt. Die Länge ist aber plötzlich -1 und der Debugger zeigt bei der internen Variable file in FileHandle null an. Gelegentlich kommt auch eine ClassNotFoundException, die suggeriert, dass FileHandle nicht gefunden wird. Diese Klasse ist aber vorhanden, ich kann ein Objekt davon eine Zeile weiter oben ohne Fehler erstellen.
Ich brauche die Download-Funktion umbedingt für das Projekt. Deswegen wollte ich frage ob ich etwas falsch mache oder das tatsächlich ein Bug ist.
mit freundlichen Grüßen
Benjamin
ich bin gerade dabei mir das JVx Framework anzusehen. Es würde perfekt zu einem Projekt passen, allerdings bin ich auf ein paar Probleme gestoßen. Die meisten konnte ich zwar selbst lösen, aber bei dem Versuch eine Datei vom Server herunterzuladen scheitere ich. Als Server läuft ein Tomcat6 mit dem JVx und ein paar Klassen. Das Upload und Download-Servlet befindet sich in der web.xml. Alle libs, die die Showcase Applikation hatte sind auch hier eingebunden. Die Client-Applikation ist eine einfache SwingApplication. Die Verbindung läuft über die HTTPConnection, allerdings via https. Dateiupload funktioniert gut, zumindest wenn die Dateien klein sind. Da bin ich schon des öfteren über OutOfMemoryError's gestolpert (hochgeladen wurde eine Datei > 500MB).
Edit: Ich benutze die aktuellste .jar von Jvx 1.0 (Beta 4).
Am Server gibt es eine Action die vom Client aufgerufen wird:
- Code: Select all
public RemoteFileHandle downloadXYZ()
Ich habe es mit drei Varianten versucht eine Datei zurückzugeben (Leserechte auf die Datei sind vorhanden):
- Code: Select all
return new RemoteFileHandle("/tmp/test.pdf", new URL("file:///tmp/test.pdf"));
oder
- Code: Select all
return new RemoteFileHandle("test.pdf", new BufferedInputStream(new FileInputStream(new File("/tmp/test.pdf"))));
oder
- Code: Select all
RemoteFileHandle h = new RemoteFileHandle();
h.setFileName("test.pdf");
h.setContent(new File("/tmp/test.pdf"));
return h;
Ausgaben am Server verifizieren immer, dass das Objekt korrekt instanziert wurde und die Länger ( getLength() ) gesetzt ist.
Der Client ruft die Methode folgendermaßen auf:
- Code: Select all
private void downloadXYZ() throws Throwable {
IFileHandle fileHandle = (IFileHandle)connection.callAction("downloadXYZ");
if (fileHandle != null) {
System.out.println(fileHandle);
System.out.println(fileHandle.getFileName());
System.out.println(fileHandle.getLength());
//application.getLauncher().saveFileHandle(fileHandle);
application.getLauncher().showFileHandle(fileHandle);
}
}
Ein Objekt vom Typ FileHandle wird auch zurückgegeben. Auch der Dateiname ist gesetzt. Die Länge ist aber plötzlich -1 und der Debugger zeigt bei der internen Variable file in FileHandle null an. Gelegentlich kommt auch eine ClassNotFoundException, die suggeriert, dass FileHandle nicht gefunden wird. Diese Klasse ist aber vorhanden, ich kann ein Objekt davon eine Zeile weiter oben ohne Fehler erstellen.
Ich brauche die Download-Funktion umbedingt für das Projekt. Deswegen wollte ich frage ob ich etwas falsch mache oder das tatsächlich ein Bug ist.
mit freundlichen Grüßen
Benjamin