L'idée est de passer une requête à une méthode distante, de la faire exécuter par cette méthode distante et de la laisser renvoyer l'ensemble de résultats à la méthode appelante.Comment renvoyer un objet resultset à partir d'une méthode distante?
Voici la méthode de l'appelant
btnOK.setOnAction((e)-> {
String query = "SELECT * FROM schoolmanagement.director;";
System.out.println("Calling RMI");
try {
Registry registry = LocateRegistry.getRegistry("localhost");
RMIInterface rmi = (RMIInterface)registry.lookup("remoteObject");
System.out.println(rmi.Query(query));
} catch (RemoteException e2) {
e2.printStackTrace();
} catch (NotBoundException e1) {
e1.printStackTrace();
}
});
Et voici la méthode à distance
public String Query(String query) throws RemoteException {
try {
Connection mycon = DriverManager.getConnection("jdbc:mysql://localhost:3306/schoolmanagement", "root", "root");
Statement mystatement = mycon.createStatement();
ResultSet rs = mystatement.executeQuery(query);
while(rs.next()){
System.out.println(rs.getString("Name") + " "+ rs.getString("Age"));
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Je sais que rs
n'est pas sérialisable. Comment est-ce que je travaille autour de ceci?
Ce n'est pas un 'String' non plus. Ne pas avoir beaucoup de sens. – EJP
@EJP return rs est juste jusqu'à ce que j'obtienne une solution. Je ne suis pas en train d'essayer de retourner un objet alors que la méthode est de type String. – Wagari
Alors de quoi parlez-vous? Votre titre dit passer 'ResultSet' * à * une méthode distante, votre question dit le renvoyer * de * une méthode distante, et votre code ne le fait pas non plus. – EJP