Tasm-Devil
Erfahrenes Mitglied
Hallo zunächst mal,
die letzten beiden Tage (und Nächte) bin ich dabei mich mit RMI anzufreunden, soweit klappt es ganz gut, wenn da nicht auf einmal ein kleines Problemchen auftreten würde. Seit 5 Stunden sitze ich vor dem PC und bekomms nicht gebacken.
Also: Mein Interface und meinen Server und meinen Client habe ich und auch die Verbindung steht. Beide greifen auf die gleichen Interface-Klassen zu und auch Methodenaufrufe funktionieren.
Jetzt möchte ich eine total primitive Klasse "Movie", welche ebenfalls sowohl Server als auch Client bekannt ist als RÜCKGABEWERT einer Funktion an den Client zurückgeben.
Ich habe alles probiert und nichts hilft. Sogar ein extra Interface, also "MovieInterface" habe ich erstellt
trotz allen Versuchen kommt nach dem ervolgreichen anmelden am Server folgende Fehlermeldung (ab Zeile 4):
Woher kommt das? Ich habe Stundenlang gegooglet und komme auch auf Tipps, die aber meistens daher rühren, dass die Leute ein "extends Remote" vergessen haben. Aber selbst das habe ich berücksichtigt.
Habe meinen Code mal hochgeladen, weils mitlerweile schon ein paar Klassen sind (ist aber noch überschaubar)
Ich hoffe mir kann jemand helfen.
die letzten beiden Tage (und Nächte) bin ich dabei mich mit RMI anzufreunden, soweit klappt es ganz gut, wenn da nicht auf einmal ein kleines Problemchen auftreten würde. Seit 5 Stunden sitze ich vor dem PC und bekomms nicht gebacken.
Also: Mein Interface und meinen Server und meinen Client habe ich und auch die Verbindung steht. Beide greifen auf die gleichen Interface-Klassen zu und auch Methodenaufrufe funktionieren.
Jetzt möchte ich eine total primitive Klasse "Movie", welche ebenfalls sowohl Server als auch Client bekannt ist als RÜCKGABEWERT einer Funktion an den Client zurückgeben.
Code:
//Klasse Movie (das ist nicht die Klasse mit der ich mich bei der rmiregistry anmelde)
package main;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Movie extends UnicastRemoteObject implements MovieInterface, Serializable{
private static final long serialVersionUID = 1L;
private int id;
public Movie(int i) throws RemoteException {
this.id = i;
}
public int getid() throws RemoteException{
return this.id;
}
}
Ich habe alles probiert und nichts hilft. Sogar ein extra Interface, also "MovieInterface" habe ich erstellt
Code:
// MovieInterface
package main;
import java.io.Serializable;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface MovieInterface extends Remote, Serializable {
public int getid() throws RemoteException;
public int setid() throws RemoteException;
}
trotz allen Versuchen kommt nach dem ervolgreichen anmelden am Server folgende Fehlermeldung (ab Zeile 4):
Code:
Welcome you are logged in TESTTEST
Lets try to get a UPA
Proxy[UnpriviledgedAccess,RemoteObjectInvocationHandler[UnicastRef [liveRef: [endpoint:[131.246.231.87:3022](remote),objID:[4d286b96:128d7067354:-7fd9, 5319042716218521974]]]]]
Exception in thread "main" java.lang.ClassCastException: $Proxy2 cannot be cast to main.Movie
at $Proxy1.getMovieById(Unknown Source)
at rmi.RmiControllerClient.start(RmiControllerClient.java:25)
at main.Client.main(Client.java:16)
Woher kommt das? Ich habe Stundenlang gegooglet und komme auch auf Tipps, die aber meistens daher rühren, dass die Leute ein "extends Remote" vergessen haben. Aber selbst das habe ich berücksichtigt.
Habe meinen Code mal hochgeladen, weils mitlerweile schon ein paar Klassen sind (ist aber noch überschaubar)
Ich hoffe mir kann jemand helfen.
Anhänge
Zuletzt bearbeitet: