Bonjour à tous,
Je dois développer une application utilisant Rmi en y appliquant du Mvc.
Pour ce faire, j'ai développer 2 applications:
- 1 serveur Rmi avec une factory et des objets métiers.
- 1 client se connectant au serveur Rmi et travaillant avec la factory pour traiter les objets métiers.
La partir Rmi fonctionne bien.
Par contre pour la partie Mvc, je coince. Voici un petit topo de ce que j'ai implémenté et comment je l'ai fait.
J'ai pris le choix d'implémenter Observer/Observable.
Côté serveur, j'ai été confronté à un premier problème qui était le fait qu'en rmi mes classes hérite de UnicastRemoteObject:
Comme j'ai besoin que ce soit par exemple cette classe qui soit Observable, j'ai décidé de la faire hérité de Observable et d'utiliser dans le constructeur la méthode static UnicastRemoteObject.exportObject(this) pour rendre cette objet "rmisable".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public class AnnuaireBuilderImpl extends UnicastRemoteObject
Donc côté serveur, pas de soucis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class AnnuaireBuilderImpl extends UnicastRemoteObject { private Vector listeAnnu; private String nom; private Vector listeClient; public AnnuaireBuilderImpl() throws RemoteException{ this.listeAnnu = new Vector(); this.listeClient = new Vector(); UnicastRemoteObject.exportObject(this); }; ...
Maintenant, côté client, je vais devoir ajouter mon Gui (ou du moins une partie) comme étant un observer de ma classe observable.
Mais comme je suis en rmi, je dois également, pour réaliser cette opération, rendre mon gui "rmisable".
Pour ce faire, j'utilisa la même logique que précédement, mais là ca coince.
La méthode static UnicastRemoteObject.exportObject se met en erreur.
Netbeans me dit: Cannot find symbol.
Voici le code:
Je ne comprend pas ce qu'il se passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import Interface.Annuaire; import Interface.AnnuaireBuilder; import Interface.ClientPhysique; import java.net.MalformedURLException; import java.rmi.*; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.Observable; import java.util.Observer; import java.util.logging.Level; import java.util.logging.Logger; public class FRM_RmiTestFactoryClient2 extends javax.swing.JFrame implements Observer{ AnnuaireBuilder annuBuilder = null; Annuaire annu = null; ClientPhysique client = null; /** Creates new form FRM_RmiTestFactoryClient2 */ public FRM_RmiTestFactoryClient2() throws RemoteException{ UnicastRemoteObject.exportObject(this); initComponents(); } ..
Partager