RMI

Status
Nicht offen für weitere Antworten.

Java-Problems

Bekanntes Mitglied
Hey Hey,
kurze frage:
bekomme folgende Fehlermeldung:
Kann mir jemand helfen?

[Java]
Exception in thread "main" java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: de.dhbw.JDBC.model.User
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
at $Proxy0.abfrageUser(Unknown Source)
at de.dhbw.clientServer.rmi.Client.main(Client.java:158)
[/Java]

und der Code dazu:

Main im Client:
[Java]
Service service = (Service) Naming.lookup("rmi://127.0.0.1/PalindromService");
service.abfrageUser()[0].getBenutzername();
[/Java]

Server:
[Java]
public User[] abfrageUser() throws RemoteException {
User[] allUsers = new User[10];
Statement stmt;

try {
stmt = makeStatement();
String sql = "SELECT benutzername, emailadresse FROM user";

ResultSet rs = stmt.executeQuery(sql);

int anzahlElemente = 0;
while (rs.next()) {
anzahlElemente++;
}
rs.beforeFirst();

int a=0;
while (rs.next()) {
User user = new User();
user.setBenutzername(rs.getString("benutzername"));
user.setEmail(rs.getString("emailadresse"));
allUsers[a]=user;
}


stmt.executeQuery("SHUTDOWN");
stmt.close();
con.commit();
con.close();

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}


return allUsers;
}
[/Java]
 

jule37

Aktives Mitglied
kann es sein, dass deine klasse User Serializable sein muss? -> java.io.NotSerializableException: de.dhbw.JDBC.model.User fliegt bei dir (siehe stack trace)

ich kenn mich mit RMI nicht so sehr aus, aber ich weiss, das bei RPC's z.B. die klassen, die man übers netz schicken will serializable sein müssen.

und n kleiner hinweis: gefangene exceptions einfach nur mit e.printStackTrace(); zu behandeln gilt als schlechter stil ;)
 
Status
Nicht offen für weitere Antworten.

Oben