Runnable et Remote comment ça marche ensemble?

Fermé
Randa - 30 mai 2013 à 21:21
 Randa - 30 mai 2013 à 22:08
Bonjour,

comment ajouter un Remote Exception a la methode run de runnable??
par exemple j ai une interface Moveable qui herite des interfaces Runnable et Remote..!

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
30 mai 2013 à 21:31
Je ne vois pas où est le problème...

import java.rmi.Remote;
import java.rmi.RemoteException;

public class MaClasse implements Remote, Runnable 
{
    @Override
    public void run() throws RemoteException
    {
    }
}
0
je veux traiter ce problème car je suis entraîne de développer une API de Code Mobile en utilisant javaRMI :


Coté Serveur:
définir une interface dérivée de Runnable et intégrant la sérialisation (appelez-la Moveable par exemple)

La méthode RMI distante ''appelez la remoteRun(Moveable m, int state);'' elle fixe l'état de départ du thread associé à m et lance l'exécution,
normalement le code de remoteRun va inclure les instruction

m.setState(state);
(m.getThread()).start();

donc il faut que l'objet moveable exporte son thread par le biais de la méthode getThread() {return activité}
la définition de cette méthode sera incluse soit dans l'interface Moveable soit dans une classe abstraite de votre choix qui implémente Moveable et servira de base pour les classes des utilisateurs (et c'est la meilleure solution parceque vous injectez un code dans la classe abstraite contrairement aux interfaces)

Coté client:

la classe qui assure la mobilité doit comporter une méthode invocable par les classes qui implémentent Moveable (ou hérite de la classe abstraite ...)
cette méthode (exemple moveRunnable) accepte deux paramètres un Moveable et un entier (état). Cette méthode effectue la connexion RMI avec le serveur et invoque la méthode remoteRun avec les mêmes paramètre en entrée.

la classe des Moveables doit comporter une référence vers le client de la mobilité (qui représente la plateforme de mobilité)
==> trasmettez le client RMI en paramètre au constructeur du Moveable.

le shéma d'ineraction est le suivant:


codemobile ======> appel client de mobilité (ex: client.moveRunnable (this, 5)) ======> client: appel RMI distant de la méthode remoteRun (m,state))) =======> serveur: exécution de remoteRun qui fixe l'état du Moveable puis lance on exécution par start().

je ne sais pas si l'idée est claire pour vous????
0