Hallo alle,
momentan versuche ich über RMI verschiedene Services anzubieten. RMI ist an sich auch kein Problem.
Diese Services sollen nur autorisierten Nutzern zur Verfügung stehen. An sich auch kein Problem. Dazu übergebe ich immer eine Session-ID, mit der der Nutzer auf Serverseite herausgesucht werden kann. Bei "access denied" werfe ich eine IllegalAccessException.
Nun soll ein Service davon sein, eine Datei runter- oder hochzuladen. Ich habe gelesen, dass dies am schnellsten über Sockets machbar ist. Also wollte ich die Autorisierung und die Anfrage wie gewohnt über RMI handhaben und dann eine Socket-Verbindung herstellen.
Auszug aus dem Remote-Interface FileService:
Wenn dann ein User die Funktion aufruft, wird die Session-ID überprüft und ggf. die Datei rausgesucht. Die Dateigröße wollte ich zurückgeben, damit der Client eine ProgressBar aktualisieren kann.
Wie baue ich dann aber danach die Socket-Connection auf?
Wie man an sich eine Verbindung aufbaut, ist mir bewusst. Der SocketServer wartet mit accept() auf eingehende Verbindungen. Nur woher weiß er dann, von wem er die Verbindung entgegennehmen darf? Oder kann er vielleicht von sich aus eine Verbindung zum anfragenden Client aufbauen und die Daten in den Outputstream schreiben?
Oder bin ich mit dem ganzen Ansatz komplett auf dem Holzweg?
Ich wäre echt dankbar für jede Hilfe!
Grüße
Negro
momentan versuche ich über RMI verschiedene Services anzubieten. RMI ist an sich auch kein Problem.
Diese Services sollen nur autorisierten Nutzern zur Verfügung stehen. An sich auch kein Problem. Dazu übergebe ich immer eine Session-ID, mit der der Nutzer auf Serverseite herausgesucht werden kann. Bei "access denied" werfe ich eine IllegalAccessException.
Nun soll ein Service davon sein, eine Datei runter- oder hochzuladen. Ich habe gelesen, dass dies am schnellsten über Sockets machbar ist. Also wollte ich die Autorisierung und die Anfrage wie gewohnt über RMI handhaben und dann eine Socket-Verbindung herstellen.
Auszug aus dem Remote-Interface FileService:
Java:
public interface FileService extends Remote
//returns filesize
public long requestDownloadFile(String sessionId, String filePath) throws RemoteException,
IllegalAccessException, IOException;
Wenn dann ein User die Funktion aufruft, wird die Session-ID überprüft und ggf. die Datei rausgesucht. Die Dateigröße wollte ich zurückgeben, damit der Client eine ProgressBar aktualisieren kann.
Wie baue ich dann aber danach die Socket-Connection auf?
Wie man an sich eine Verbindung aufbaut, ist mir bewusst. Der SocketServer wartet mit accept() auf eingehende Verbindungen. Nur woher weiß er dann, von wem er die Verbindung entgegennehmen darf? Oder kann er vielleicht von sich aus eine Verbindung zum anfragenden Client aufbauen und die Daten in den Outputstream schreiben?
Oder bin ich mit dem ganzen Ansatz komplett auf dem Holzweg?
Ich wäre echt dankbar für jede Hilfe!
Grüße
Negro