RMI - Objekte übertragen?

Extremefall

Bekanntes Mitglied
Hallo,
ich wollte einmal fragen, wie ich ein Objekt einer JVM zu einer anderen übertragen kann. Leider habe ich hauptsächlich alte Lösungen gefunden, die nicht mehr aktuell sind.

Kann man ein Objekt auch ohne Methode versenden? Oder versendet man es einfach über eine sondierende Methode? Ist der Unterschied von eigenen Klassen zu Klassen wie String einfach, dass man dort noch das Interface Serializable implementieren muss? Oder muss man sonst noch etwas beachten?
Wäre so etwas in Ordnung?

Java:
public class Auto implements Serializable{
...
}
public interface ClientInterface extends Remote{
public String gibModell() throws RemoteException;
}

public class Server extends UnicastRemoteObject implements ClientInterface
{
	Server() throws RemoteException
  {
    super();
  }
  
  public static void main(String[] args)
  {
    try {
      LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
    }
    
    catch (RemoteException ex) {
      System.out.println(ex.getMessage());
    }
    try {
      Naming.rebind("Server", new Server());
    }
    catch (MalformedURLException ex) {
      System.out.println(ex.getMessage());
    }
    catch (RemoteException ex) {
      System.out.println(ex.getMessage());
    }
  }

@Override
public void gibModell() throws RemoteException {
...	
}

Kennt ihr vielleicht noch ein Tutorial, was auch für Einsteiger plausibel ist oder könnt mir bei meinen Fragen einfach weiterhelfen? Das RMI Mini Tutorial hatte leider keine Codeschnipsel etc.
 
dieses hier schon gesehen?
Trail: RMI (The Java™ Tutorials)
wobei ich es selber nicht durchgearbeitet habe, aber Code genug scheint ja da zu sein,

was man im einzelnen mit LocateRegistry usw. macht hat mich auch noch nie interessiert, das ist Infrastruktur-Code,
kopiere dir von irgendwo eine lauffähige Variante, deine Frage am Anfang enthält keine konkrete Fehlemeldung, was soll man dazu schon sagen,
ausprobieren?

an Beispielen siehst du wie ein Inferface und ein Service zu implementieren ist und wie ein Testaufruf aussieht,
übertragenden Objekte sollten gewiss Serializable sein,

viel mehr gibts anfangs auch nicht zu beachten, Zaubereien wie Listener natürlich erstmal nicht,
X stellt eine Anfrage, Y antwortet, fertig, schon ne Menge erreicht
 
alles was sich normalerweise zum Übertragen eignet sollte auch Serializable sein,
wenn du eine Exception bekommt, ist das meist ein Zeichen dass die Übertragung keine gute Idee ist,
z.B. Threads, Stream-Objekte, eigentlich auch alles aus AWT und Swing, obwohl die schon Serializable sind..

ein Problem was ich häufig habe ist, dass das Interface List nicht Serializable ist, während ArrayList und Co. das schon richtig machen,
aber als Attribut in einer eigenen Klasse muss das gar nicht stören, nur wenn man ein List-Objekt wie ich in einem Feld
[c]Serializable transportDaten[/c] speichern will 😉

bei den wenigen primitiven Datentypen und Arrays gibts natürlich überhaupt keine Frage,
da könntest du auch kaum was alternatives bauen
 
Da taucht aber schon die erste Problemklasse auf:
Die Klasse BufferedImage implementiert nicht das Interface Serializable. Wie kann ich die Klasse dennoch nutzen oder welche Alternativen bleiben mir? Wie könnte ich z.B. BufferedImage in ein ByteArray packen und dann nach der Übertragung wieder in ein BufferedImage umwandeln? (Ich habe gelesen, dass man das "Problem" so umgehen könnte).
 

Neue Themen


Zurück
Oben