import java.rmi.* ; import java.rmi.server.* ; import java.net.* ; import java.util.Vector ; /* ************************************ */ /* Extension de UnicastRemoteObject */ /* Implantation de l'interface distante */ /* ************************************ */ public class ServeurEx2 extends UnicastRemoteObject implements InterfaceEx2 { /* ************************************ */ /* Constructeur */ /* ************************************ */ public ServeurEx2() throws RemoteException { super() ; } /* ************************************ */ /* Produit d'un vecteur par une matrice */ /* ************************************ */ public Vecteur produitMatriceVecteur(Matrice m,Vecteur v) throws RemoteException { Vecteur r = new Vecteur() ; for ( int i = 0 ; i < 4 ; i++ ) { r.m[i] = 0.0F ; for ( int j = 0 ; j < 4 ; j++ ) r.m[i] += m.m[i][j]*v.m[j] ; } return(r) ; } /* ************************************ */ /* Produit de plusieurs vecteurs */ /* par une matrice */ /* ************************************ */ public Vector produitMatriceVecteurs(Matrice m,Vector vv) throws RemoteException { Vector r = new Vector() ; int n = vv.size() ; for ( int v = 0 ; v < n ; v++ ) { Vecteur vec =(Vecteur) vv.elementAt(v) ; Vecteur nv = new Vecteur() ; for ( int i = 0 ; i < 4 ; i++ ) { nv.m[i] = 0.0F ; for ( int j = 0 ; j < 4 ; j++ ) nv.m[i] += m.m[i][j]*vec.m[j] ; } r.addElement(nv) ; } return(r) ; } /* ************************************ */ /* Application serveur assurant */ /* la creation d'un objet distant, */ /* sa referenciation avec namming */ /* sur la rmiregistry de l'hote local */ /* ************************************ */ public static void main(String [] args) { try { ServeurEx2 esclave = new ServeurEx2(); Naming.rebind("Esclave",esclave) ; ServeurEx2 esclaves[] = new ServeurEx2[10] ; for ( int i = 0 ; i < 10 ; i++ ) { esclaves[i] = new ServeurEx2(); Naming.rebind("Esclave"+(i+1),esclaves[i]) ; } System.out.println("Prêt"); } catch (RemoteException re) { System.out.println(re) ; } catch(MalformedURLException e) { System.out.println(e) ; } } }