passer un objet en parametre d'une methode client RMI
Bonjour,
Je voudrai passer un objet en parametre d'un methode, mais apres plusieurs essais différents j'ai toujours des erreurs à l'execution mais pas à la compilation. La derniere est
java.lang.ClassCastException: $Proxy0 cannot be cast to ServeurCalcul
Voila le code qui recupere l'objet distant et qui essai d'effectué une methode sur cette objet(la méthode en question a pour but d'inserer l'objet Serveur calcul dans un tableau de serveurCalcul de la classe distante)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
//ServerCalcul.java
import java.rmi.server.*;
import java.rmi.*;
import java.math.*;
import java.io.Serializable;
public class ServeurCalcul extends UnicastRemoteObject implements PiInterfacePart
{
public int nbServ;
public ServeurCalcul()throws RemoteException{ super();}
public BigDecimal calculPart(int nbDecimal, int index) throws RemoteException {...}
public static void main (String args[]){
try
{
System.out.println("Récuperation de l'objet");
System.out.println("je crée le serveur à inserer");
PiInterfacePart SC = new ServeurCalcul();
PiInterface p = (PiInterface)Naming.lookup("rmi://localhost:1099/PiImpl");
System.out.println("Insertion de ce serveur dans l'impl");
p.insertServ(SC);//<-------CA PLANTE SUR CETTE METHODE
System.out.println("Serveur de calcul pret");
}
catch(Exception e)
{
System.out.println("Erreur de liaison de l'objet dans le PiImplpart coté Calcul");
System.out.println(e.toString());
}
}
} |
voila le code ou se trouve la methode elle doit récupérer l'objet ServeurCalcul et l'inserer grace à la methode insertServ().
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
//PiImpl.java
import java.rmi.*;
import java.rmi.server.*;
import java.math.*;
public class PiImpl extends UnicastRemoteObject implements PiInterface
{
public BigDecimal S;
public ServeurCalcul [] tab = new ServeurCalcul[100];
public PiImpl()throws RemoteException{
super();
}
public void insertServ(PiInterfacePart SC)throws RemoteException{
if (tab.length==0)
{
ServeurCalcul Sv = (ServeurCalcul)SC;
tab[0]=Sv
}
else
{
int indexInsert = tab.length + 1;
ServeurCalcul Sv = (ServeurCalcul)SC;
tab[indexInsert] = Sv;
}
}
... |
Voila je suis preneur pour n'importe quelle idée qui fera avancer le chmilibilibilique...
Merci d'avance.