Salut à tous,
SVP veillez m'aider à résoudre mon problème.
Mon fichier bibliotheque.idl est le suivant :
l'énoncé de l'exercice indique qu'il faut céer une classe "LivreImpl" (implémentation de la classe Livre) et une autre classe "BibliothequeImpl"(implémentation de la classe Bibliotheque).
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 module serviceBiblio { interface Livre { attribute string auteur; attribute string titre; attribute long id; }; interface Bibliotheque { exception LivreExisteDeja{ string titre; }; exception LivreIntrouvable { string titre; }; Livre CreerLivre(in string auteur,in string titre, in long id) raises(LivreExisteDeja); Livre TrouverLivre(in long id) raises(LivreIntrouvable); void RetirerLivre(in long id) raises(LivreIntrouvable); }; };
La classe "LivreImpl" contient les getters et les setters (selon l'IDL) et un constructeur dont la signature est le suivante :
donc voici un extrait de classe "BibliothequeImpl" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public LivreImpl(int id,String titre,String auteur)
voici un extrait de la classe serveur :
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 public class BibliothequeImpl extends BibliothequePOA { private Livre livre; private Vector<Livre> VLivre; int i; public BibliothequeImpl() { VLivre=new Vector<Livre>(); } public Livre CreerLivre(String auteur,String titre,int id) throws LivreExisteDeja { for(i=0;i<VLivre.size();i++) if(id==VLivre.get(i).id()) throw new LivreExisteDeja(titre); livre=(Livre) new LivreImpl(id, titre, auteur); VLivre.add(livre); return livre; } //SUITE DU CODE }
voici un extrait de la classe Client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BibliothequeImpl bibliothequeImpl=new BibliothequeImpl(); Bibliotheque bibliotheque=bibliothequeImpl._this(orb); //puis j'ai utilisé le service de nommage pour référencer l'objet "bibliotheque"
Mais Lors de l'exécution de la classe serveur une erreur se déclanche (Il s'agit surement d'un problème de casting lors de l'invocation de la méthode "CreerLivre" de la classe "BibliothequeImpl"; le code spécifique à l'exception est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 org.omg.CORBA.Object obj=orb.resolve_initial_references("NameService"); NamingContext nc=NamingContextHelper.narrow(obj); //.... org.omg.CORBA.Object bibobj=nc.resolve(bib); Bibliotheque bibliotheque=BibliothequeHelper.narrow(bibobj); bibliotheque.CreerLivre("aa", "aaa",1);
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Caused by: java.lang.ClassCastException: serviceBiblio.LivreImpl cannot be cast to org.omg.CORBA.Object at serviceBiblio.BibliothequeImpl.CreerLivre(BibliothequeImpl.java:24)
Partager